Java中奇怪的if-then行为

Java中奇怪的if-then行为,java,Java,可能重复: 我有以下代码: System.out.println(staff.getEmail().length()); System.out.println(staff.getEmailList()); if ((staff.getEmail().length() > 0) && (staff.getEmailList() == "Y")) { System.out.println(staff.getEmail()); 这是我的

可能重复:

我有以下代码:

    System.out.println(staff.getEmail().length());
    System.out.println(staff.getEmailList());
    if ((staff.getEmail().length() > 0) && (staff.getEmailList() == "Y")) {
        System.out.println(staff.getEmail());
这是我的eclipse控制台上的输出:

12
Y
我的问题是,即使if语句中的两个条件都满足,我的程序也永远无法到达上面的最后一行代码(System.out.println(staff.getEmail())。我也不知道有什么错误

知道我做错了什么吗?谢谢:)

您应该使用而不是运算符==来实现java中的字符串相等

staff.getEmailList()==“Y”
应转换为
“Y”.equals(staff.getEmailList())


其原因是
运算符==
检查标识。如果两个操作数是同一个对象(引用同一个对象),而
equals()
检查是否相等-如果两个操作数彼此相等。

这里您比较的不是实际的字符串值,而是它们的引用(C语言中的指针)

你应该这样做

(staff.getEmailList().equals("Y"))

当您比较staff.getEmailList()==“Y”时,您询问的是这两个字符串是否是相同的
String
实例,而不是它们是否具有相同的值。您应该改为
staff.getEmailList().equals(“Y”)

(staff.getEmailList().equals("Y"))