Possible Duplicate:
How do I compare strings in 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());


这是我的Eclipse控制台上的输出:

12
Y


我的问题是,即使同时满足if语句中的两个条件,我的程序也永远无法到达上面的代码的最后一行(System.out.println(staff.getEmail()))。我也没有任何错误。

有什么主意我做错了吗?谢谢 :)

最佳答案

对于Java中的字符串相等性,应使用String.equals()而不是operator ==。

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

原因是operator==检查身份。如果两个操作数是相同的对象(引用相同的对象),则equals()检查是否相等-两个操作数是否相等。

关于java - Java中怪异的if-then行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13860496/

10-12 19:01