意外的布尔结果

时间:2011-05-25 14:07:19

标签: java

我有以下Java代码:

String p = "seven";
String q = "teen";
p + q == "seventeen";

为什么最后一行返回false而不是true

4 个答案:

答案 0 :(得分:10)

因为您应该使用equals方法进行String比较。 ==运算符比较对象引用,并且每个对象都是唯一的。在将对象与自身进行比较时,您只需true进行==比较。

尝试(p + q).equals("seventeen");

请注意,java中的String比较区分大小写,因此您可能还需要查看equalsIgnoreCase方法。

答案 1 :(得分:4)

(p + q).intern()==“seventeen”

实习生将从池中返回字符串

答案 2 :(得分:0)

比较Strings时,您必须使用String方法equalsequalsIgnoreCase,否则您需要比较对象。由于p + q"seventeen"不同,因此您的结果将为false。

答案 3 :(得分:0)

因为==是引用相等而不是逻辑相等。字符串是不可变的,所以你得到新的字符串,它们在内存中的位置不同。尝试:

String p = "seven";
String q = "teen";
(p + q).equals("seventeen");