为什么"F"+"alse"不是=="False"?

use*_*127 12 java string-comparison

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

我无法理解为什么声明的变量不一样.

前代码:

 String firstPart = "F";
 String whole = "False";
 String connected = firstPart + "alse";
 System.out.println(connected == whole);
Run Code Online (Sandbox Code Playgroud)

现在这产生一个布尔值,我认为它将是"真的"但它不是,它出来是假的,我不明白为什么.

有人可以解释一下吗?

Fem*_*ref 20

您正在比较参考,而不是值.

你需要使用equals:

connected.equals(whole);
Run Code Online (Sandbox Code Playgroud)


Bri*_*new 14

这个

String connected = firstPart + "alse";
Run Code Online (Sandbox Code Playgroud)

使用新的基础char数组和新引用创建一个 String对象.

因此,当您比较引用(使用'=='')时,您将无法获得匹配.如果你比较实际的对象内容equals()然后你会得到你想要的结果(因为String.equals()比较底层char数组的内容)


izo*_*ica 6

您应该使用比较字符串equals().像这样:

System.out.println(connected.equals(whole));