java - Java 中奇怪的 if-then 行为

标签 java

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()))。我也没有任何错误。

有什么想法我可能做错了什么吗?谢谢:)

最佳答案

您应该使用String.equals()而不是 Java 中用于字符串相等的运算符 ==。

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

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

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

相关文章:

java - Java 数组中的泛型

java - 无需按 Enter 键即可启用 jcombobox

java - 在Java中 transient 会忽略变量或值吗?

java - 如何在Java中标准化IPv6地址?

Java计算字符串中的单词数,而不使用split或StringTokenizers等

java - 了解以毫秒为单位的 XMLGregorianCalendar/GregorianCalendar 时间

java - 从大小为 N 的数组生成一组 M 元素

java - 寻求 Java 代码架构方面的帮助

javafx标签不显示循环结果

JavaFX TableView/Column 空指针异常