2

可能重复:
如何比较 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()))。我也没有任何错误。

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

4

3 回答 3

7

您应该使用String.equals()而不是运算符 == 在 java 中进行字符串相等。

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

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

于 2012-12-13T13:07:17.747 回答
0

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

(staff.getEmailList() == "Y")

你应该做这个

(staff.getEmailList().equals("Y"))
于 2012-12-13T13:10:53.473 回答
0

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

于 2012-12-13T13:11:25.237 回答