運算符 “==”與equals的比較
運算符 “==”:
比較兩個引用是否指向同一個對象,實際上就是比較棧內存中兩個引用指向對象的地址是否相等;但是它並未涉及到對象內容的比較。
equals(Object):
比較兩個引用指向對象的內容是否相等,具體實現是通過一個字符一個字符的方式來完成比較的,關鍵代碼如下:
if (anObject instanceof String) {
String anotherString = (String) anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
示例1:
String str1 = "test";
String str2 = "test";
System.out.println(str1 == str2); // true
System.out.println(str1.equals(str2)); // true
示例2:
String str3 = "test";
String str4 = new String("test");
System.out.println(str3 == str4); // false
System.out.println(str3.equals(str4)); // true
由示例1和示例2即可發現:運算符 “==”與equals(Object)的區別。
如有錯誤,可及時回覆於我。