2014-12-07 55 views
0

所以我明白==会检查引用号码(内存中对象的地址)是否相等。 .equals()检查对象的内容。比较java中使用==的字符串vs .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 
+3

这已在[此线程]中详细解释(http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java)。 – eis 2014-12-07 18:10:38

回答

5

不是S和S2两个不同的对象

s号和s2指的是已在String池中被执行的相同对象

+0

所以无论何时你说'String something =“something”'引用变量'something'指的是同一个对象? – PTheCoolGuy 2014-12-07 18:16:54

+0

是的。只要''东西''已经被实习。你可以使用'new String(“test”)'明确地创建一个不同的对象来返回'false'来进行第一次测试 – Reimeus 2014-12-07 18:27:40

+0

是的。谢谢 – PTheCoolGuy 2014-12-07 18:28:04