为什么我不应该对对象使用相等运算符

时间:2014-04-12 15:23:05

标签: java

我有这本关于Java的书,它告诉我,如果我将关系运算符用于字符串之类的对象,那么它将被视为错误。即使两个字符串具有相同的字面值。我测试了这个,但是真的被印了。有人可以解释为什么会这样吗?

String y = "Not null";
String x = "Not null";

            if(x == y)
                System.out.println("True");

2 个答案:

答案 0 :(得分:2)

两个Strings都在字符串池中实现,因此xy引用相同的对象。如果你这样做,表达式将不会评估为true

String y = "Not null";
String x = new String("Not null");

由于Strings是不可变的,因此许多方法通常会返回新的String Objects。这就是为什么建议使用.equals方法比较内容。

答案 1 :(得分:0)

字符串在字符串池中实现,它将返回已经在字符串池中实现的字符串对象的引用(因为它们是相同的)。这就是为什么在你的情况下,它被评估为“true”。