巴扎黑2017-04-18 10:08:30
在java中判斷String 使用 == 是判斷兩個物件的位址而不是hashCode。因為你這是兩個 String 物件 ,因為你這兩個都是使用new 的,所以使用 == 是 false。
巴扎黑2017-04-18 10:08:30
hashCode 和 == 是不一樣的。 ==比較的是記憶體位址, 而hashCode是根據實例變數計算出來的。
你使用了new創建了兩個String實例(new 關鍵字是會開闢新內存空間的),而不是直接引用string池中的“hello”,下面是此構造器的源代碼。
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
而String的hash計算方法是根據上述程式碼中的value和hash。