我有这段代码:
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()))。我也没有任何错误。
任何想法我可能做错了什么?谢谢:))
答案 0 :(得分:7)
你应该使用String.equals()
而不是operator ==来实现java中的字符串相等。
staff.getEmailList() == "Y"
应转换为"Y".equals(staff.getEmailList())
原因是operator==
检查身份。如果两个操作数是同一个对象(引用同一个对象),而equals()
检查相等 - 如果两个操作数相等。
答案 1 :(得分:0)
这里你不是实际比较字符串值,而是它们的引用(用C语言指针)。
(staff.getEmailList() == "Y")
你应该这样做
(staff.getEmailList().equals("Y"))
答案 2 :(得分:0)
当你进行比较staff.getEmailList() == "Y"
时,你会问这两个字符串是否是相同的String
个实例,而不是它们是否具有相同的值。你应该staff.getEmailList().equals("Y")
来代替。