相信這個簡單的問題實際上卻很少有人真正的去了解過吧,其實小編也是最近遇到了才展開了初步研究的。若是有敘述得不准確的歡迎親親為小編提出糾正。(以下言論為引用參考)
①兩者的區別
== 為運算符
equal 為String數據類型的比較方法.equal()
②兩者的比較范圍
一方面是基礎數據類型(例如 int a = 1),== 與 equal 都是作用於比較對象內容(堆)是否相同。
另一方面則是引用對象類型(例如 int a = new int(1)), == 與 equal 都是作用於比較對象內存地址(棧)是否相同。
③需要注意的是
1.equal在源碼中的實現為一下存在形式,可以被重寫
public boolean equals(Object obj) {
return (this == obj);
}
2.相同內容的對象地址不一定相同,但相相同地址的對象內容一定相同。