Java 意外的布尔结果

Java 意外的布尔结果,java,Java,我有以下Java代码: String p = "seven"; String q = "teen"; p + q == "seventeen"; 为什么最后一行返回false而不是true?因为您应该使用字符串比较的方法。=操作符比较对象引用,这些引用对于每个对象都是唯一的。在将对象与自身进行比较时,对于==比较,只能得到true 试试(p+q).等于(“十七”) 请注意,java中的String比较区分大小写,因此您可能还想看看该方法 因为您应该使用String比较的方法。=操作符比较对象引

我有以下Java代码:

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");
这可能是的副本这可能是的副本