输出和解释是什么?

时间:2019-06-13 13:53:54

标签: java

下面的代码返回布尔值false值。有什么解释吗?

String str = "Bee";
String str2 = "Bee";
System.out.println("==" + str == str2); 

实际结果:错误

2 个答案:

答案 0 :(得分:0)

strstr2都被分配了相同的String实例,因为String文字被自动存储在String池中。因此,str == str2true

但是,您正在打印表达式"==" + str == str2。该表达式是从左到右求值的,因此首先求"==" + str的值,并得到String“ == Bee”的结果。然后,将==运算符应用于“ == Bee”和“ Bee”,它们返回false

如果将语句更改为:

System.out.println("==" + (str == str2)); 

您将获得true,因为现在比较将在串联String之前进行。

答案 1 :(得分:0)

使用equals比较字符串,在这种情况下它将返回true

==运算符比较这些字符串与Object完全相同。

理论上,这种可能发生在字符串内部化的情况下,但是您不能依靠它。对于您的情况,比较String的值,请使用str.equals(str2)