Java中奇怪的if-then行为
可能重复:Java中奇怪的if-then行为,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()); 这是我的
我有以下代码:
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中的字符串相等
staff.getEmailList()==“Y”
应转换为“Y”.equals(staff.getEmailList())
其原因是
运算符==
检查标识。如果两个操作数是同一个对象(引用同一个对象),而equals()
检查是否相等-如果两个操作数彼此相等。这里您比较的不是实际的字符串值,而是它们的引用(C语言中的指针)
你应该这样做
(staff.getEmailList().equals("Y"))
当您比较staff.getEmailList()==“Y”时,您询问的是这两个字符串是否是相同的
String
实例,而不是它们是否具有相同的值。您应该改为staff.getEmailList().equals(“Y”)
(staff.getEmailList().equals("Y"))