Java 意外的布尔结果
我有以下Java代码:Java 意外的布尔结果,java,Java,我有以下Java代码: String p = "seven"; String q = "teen"; p + q == "seventeen"; 为什么最后一行返回false而不是true?因为您应该使用字符串比较的方法。=操作符比较对象引用,这些引用对于每个对象都是唯一的。在将对象与自身进行比较时,对于==比较,只能得到true 试试(p+q).等于(“十七”) 请注意,java中的String比较区分大小写,因此您可能还想看看该方法 因为您应该使用String比较的方法。=操作符比较对象引
String p = "seven";
String q = "teen";
p + q == "seventeen";
为什么最后一行返回
false
而不是true
?因为您应该使用字符串比较的方法。=
操作符比较对象引用,这些引用对于每个对象都是唯一的。在将对象与自身进行比较时,对于==
比较,只能得到true
试试(p+q).等于(“十七”)代码>
请注意,java中的String
比较区分大小写,因此您可能还想看看该方法 因为您应该使用String
比较的方法。=
操作符比较对象引用,这些引用对于每个对象都是唯一的。在将对象与自身进行比较时,对于==
比较,只能得到true
试试(p+q).等于(“十七”)代码>
请注意,java中的String
比较区分大小写,因此您可能还想看看该方法 在比较字符串时,必须使用String
方法equals
或equalsIgnoreCase
,否则就是在比较对象。由于p
+q
是与“17”
不同的对象,因此您的结果将为假。在比较字符串时,必须使用字符串方法等于或相等信号案例
,否则您是在比较对象。由于p
+q
与“十七”
是不同的对象,因此您的结果将为假。(p+q).intern()=“十七”
intern将从池中返回字符串(p+q)。intern()=“17”
intern将从池返回字符串,因为==是引用相等而不是逻辑相等。字符串是不可变的,因此您将获得新的字符串,这些字符串在内存中的位置不同。尝试:
String p = "seven";
String q = "teen";
(p + q).equals("seventeen");
因为==是引用相等,而不是逻辑相等。字符串是不可变的,因此您将获得新的字符串,这些字符串在内存中的位置不同。尝试:
String p = "seven";
String q = "teen";
(p + q).equals("seventeen");
这可能是的副本这可能是的副本