2014-12-07 31 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