奇怪的if-then行为在Java中

mrj*_*per 2 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());
Run Code Online (Sandbox Code Playgroud)

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

12
Y
Run Code Online (Sandbox Code Playgroud)

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

我有什么想法,我做错了什么?谢谢 :)

ami*_*mit 7

你应该使用String.equals()而不是operator ==来表示java中的字符串相等性.

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

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