关于Java等于运算符的用法

gpu*_*guy -6 java

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

class StringTest {
public static void main(String[] args) {
String str1 = "Hi there";
String str2 = new String("Hi there");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
}
Run Code Online (Sandbox Code Playgroud)

输出结果出来:

                          False
                          true  
Run Code Online (Sandbox Code Playgroud)

为什么即使str1和str2看起来相等,第一个输出也是假的?

aio*_*obe 6

==比较变量的内容.(你很清楚这一点intA == intB.)

一个String变量包含一个参考String对象,所以==会比较引用.

String str1 = "Hi there";
String str2 = new String("Hi there");
Run Code Online (Sandbox Code Playgroud)

str1并且str2将参考不同的字符串对象,从而包含不同的引用,因此str1 == str2会产生false.

str1.equals(str2)另一方面,将比较str1str2引用的对象,正如您所指出的那样,它们会产生true.