为什么“F”+“alse”不是==“False”?

2022-09-04 05:17:50

可能的重复:
如何在Java中比较字符串?

我不明白为什么声明的变量不一样。

例如代码:

 String firstPart = "F";
 String whole = "False";
 String connected = firstPart + "alse";
 System.out.println(connected == whole);

现在这产生了一个布尔值,我以为它会是“真的”,但事实并非如此,它出来是假的,我不明白为什么。

有人能解释一下吗?


答案 1

您比较的是引用,而不是值。

您需要使用 :equals

connected.equals(whole);

答案 2

String connected = firstPart + "alse";

创建一个新对象,其中包含一个新的基础 char 数组和新引用。String

因此,当您比较引用(使用“==”)时,您将无法获得匹配项。如果您比较实际的对象内容,那么您将获得所需的结果(因为比较了基础char数组的内容)equals()String.equals()