運算符 “==”與equals(Object)的比較

運算符 “==”與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)的區別。


如有錯誤,可及時回覆於我。微笑

發佈了36 篇原創文章 · 獲贊 18 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章