2017-04-23 74 views
-2

我有兩個字符串驗證字符串創建兩個對象:我想知道,我們如何能夠利用新的

String s = "ABC"; 
String s1 = new String("ABC"); 

從理論上講,如果我沒有在這種情況下,創造了兩個錯誤的對象。我可以驗證使用hashcode()。

public static void main(String[] args) { 
     System.out.println(s.hashCode()); 
     System.out.println(s1.hashCode()); 
    } 

} 

輸出:

2125849484 
2125849484 

如果我沒看錯的,hashcode()不僅有助於我們在驗證其分配給它的「ABC」類似的價值無論是字符串,因爲這樣哈希碼值相同。在堆內存中創建的第二個對象呢?我們如何驗證它是否被創建。

+5

你真的需要知道嗎? – Carcigenicate

+0

@Carcigenicate,如果有可能找出答案。好的! –

+0

要查看兩個引用是否不是引用同一個對象,請使用's!= s1',這也是爲什麼您不能使用'=='比較字符串,除了實際上想檢查「字符串對象。所以,** **的對立面[我如何比較Java中的字符串?](http://stackoverflow.com/q/513832/5221149)。 – Andreas

回答

1

您可以使用!=,這證實了兩個變量不引用同一個對象:

String first = "ABC"; 
String second = new String("ABC"); 
System.out.println(first != second); //=> true 

這種技術是在對比!first.equals(second),檢查兩個字符串是否持有字符的不同序列。看到文章How do I compare strings in Java

1

如果你想被檢查S1小號是物理上相同的對象,你可以使用(==)操作什麼。

String s1 = "ABC" 
String s2 = new String("ABC"); 
boolean b1 = s1 == s2;  //false 
boolean b2 = s1.equals(s2); //true 

相反到等於方法,用於檢查結構相等(相同值)。

相關問題