使用==vs.equals比较java中的字符串

使用==vs.equals比较java中的字符串,java,Java,所以我知道==检查引用号(内存中对象的地址)是否相等。.equals()检查对象的内容 String s = "test"; String s2 = "test"; 我正在创建两个不同的字符串对象,但得到以下结果: s == s2; //true, I dont know why, aren't s and s2 two different objects with different internal values s.equals(s2); //true, wh

所以我知道==检查引用号(内存中对象的地址)是否相等。.equals()检查对象的内容

String s = "test";
String s2 = "test";
我正在创建两个不同的字符串对象,但得到以下结果:

s == s2;  //true, I dont know why, aren't s and s2 two different objects with 
            different internal values
s.equals(s2); //true, which I understand
s和s2不是两个不同的对象吗

否。
s
s2
指的是在
String
池中驻留的同一对象

s和s2不是两个不同的对象吗


否。
s
s2
指的是在
String
pool

中驻留的同一对象,这已在中进行了详细解释。因此,无论何时说
String something=“something”
时,引用变量
something
都指的是同一对象?是的。前提是“某物”已经实习。您可以使用
new String(“test”)
显式创建一个不同的对象,以便在第一次测试中返回
false
,因此,每当您说
String something=“something”
时,引用变量
something
引用同一对象?是的。前提是“某物”已经实习。您可以使用
newstring(“test”)
显式创建另一个对象,以便在第一次测试中返回
false