我有这本关于Java的书,它告诉我,如果我将关系运算符用于字符串之类的对象,那么它将被视为错误。即使两个字符串具有相同的字面值。我测试了这个,但是真的被印了。有人可以解释为什么会这样吗?
String y = "Not null";
String x = "Not null";
if(x == y)
System.out.println("True");
答案 0 :(得分:2)
两个Strings
都在字符串池中实现,因此x
和y
引用相同的对象。如果你这样做,表达式将不会评估为true
。
String y = "Not null";
String x = new String("Not null");
由于Strings
是不可变的,因此许多方法通常会返回新的String
Objects
。这就是为什么建议使用.equals
方法比较内容。
答案 1 :(得分:0)
字符串在字符串池中实现,它将返回已经在字符串池中实现的字符串对象的引用(因为它们是相同的)。这就是为什么在你的情况下,它被评估为“true”。