在字符串中使用'=='?(JAVA)

Hag*_*gra 3 java string equality sign equals

String str1 = new String("I love programming");
String str2 = new String("I love programming");
boolean boo = str1 == str2; // evaluates to false

String str1 = "I love programming";
String str2 = "I love programming";
boolean boo = str1 == str2; // evaluates to true
Run Code Online (Sandbox Code Playgroud)

为什么第一个评估为假,第二个评估为真?

在这里你可以找到更多:什么是Java字符串池以及"s"与新String("s")有何不同?

umo*_*sdn 13

==如果对象本身具有相同的地址,则返回true.出于空间和效率的原因,重复的文字被优化为使用相同的地址.第二个str1并且str2等于相同的地址,因此==返回true.

在第一个示例中,因为您使用new关键字明确声明了内存,所以str1并且str2没有相同的地址.因此,str1==str2评估为false.

测试相等性时,请改用该String.equals();函数.从而,str1.equals(str2); //true