Possible Duplicate:
why equals() method when we have == operator?
当我尝试用 Java 执行代码时,它给了我 2 个不同的输出
String txt1="Hello";
String txt2="Hello";
System.out.println((boolean)txt1==txt2);
String txt1=new String("Hello");
String txt2=new String("Hello");
System.out.println((boolean)txt1==txt2);
字符串是对象。 ==
比较对象引用,而不是字符串的内容。为此,请使用 String#equals
方法。
在您的第一个示例中,txt1
和 txt2
是指向相同 String
对象的两个变量。所以他们是 ==
彼此。
在您的第二个示例中,txt1
和 txt2
指向两个不同 String
对象(它们具有相同的字符序列),因此它们不是 ==
彼此。
另外:编写 new String("string literal")
几乎没有任何意义。如果您不明确知道这样做的真正非常好的理由,请不要这样做。只有一些非常、非常、非常不寻常的情况下你可能会这样做,这些情况与与低级别的东西交互有关。不是在正常的可移植 Java 代码中。
偶尔有理由使用new String(String)
(不是字符串文字,而是从其他地方获得的实例,如 substring
)。参见 this article有关更多信息(感谢 Rp-)。