關於 「==」 和 「equals」 : java
1) 對於Object類來講 「==」 和 「equals」 是等價的,判斷引用是否指向同一個對象。this
API 實現: public boolean equals(Object obj) {spa
return (this == obj);code
}對象
2)對於String類來講,「equals」 方法重寫了Object類的「equals」,
it
能夠用來比較兩個String類型的字面值是否相等,而不僅是判斷是否指向同一個對象。class
API實現: 引用
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { // 向下類型轉換,重要 String anotherString = (String)anObject; int n = count; if (n == anotherString.count) { char v1[] = value; char v2[] = anotherString.value; int i = offset; int j = anotherString.offset; while (n-- != 0) { if (v1[i++] != v2[j++]) return false; } return true; } } return false; }
3)對於其它沒有重寫父類Object中equals方法的類來講,方法
「==」 和 "equals"同樣。而對於有重寫的equals的類來講,tab
就要看具體的實現了。
因此不能籠統地說:「==」是用來比較引用是否相等,"equals"用來比較值是否相等。