== 和 equals 的區別
阿新 • • 發佈:2020-08-13
== 和 equals 的區別
== 對於基本資料型別來說,是用於比較
“值”是否相等的;而對於引用型別來說,是用於比較引用地址是否相同的。
檢視原始碼我們可以知道 Object 中也有 equals() 方法,原始碼如下:
public boolean equals(Object obj) {
return (this == obj);
}
可以看出,Object 中的 equals() 方法其實就是 ==,而 String 重寫了 equals()
方法把它修改成比較兩個字串的值是否相等。
原始碼如下:
public boolean equals(Object anObject) { // 物件引用相同直接返回 true if (this == anObject) { return true; } // 判斷需要對比的值是否為 String 型別,如果不是則直接返回 false if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { // 把兩個字串都轉換為 char 陣列對比 char v1[] = value; char v2[] = anotherString.value; int i = 0; // 迴圈比對兩個字串的每一個字元 while (n-- != 0) { // 如果其中有一個字元不相等就 true false,否則繼續對比 if (v1[i] != v2[i]) return false; i++; } return true; } } return false; }