Java(一)equals與==區(qū)別

==: 它的作用是判斷兩個對象地址是不是相等。即判斷兩個對象是不是同一個對象。(對于基本類型,==比較的是。對于引用數(shù)據(jù)類型,==比較的是內(nèi)存地址)。

equals():它的作用也是判斷兩個對象是否相等。一般有兩種情況:

  • 情況1:類沒有覆蓋equals()方法。則通過equals()比較該類的兩個對象時,等價于通過“==”比較這兩個對象。
  • 情況2:類覆蓋了equals()方法。一般,我們都覆蓋equals()方法來比較兩個對象的內(nèi)容是否相等;若內(nèi)容相等,則返回ture。
    例如:
public class test1 {
 public static void main(String[] args) {
 String a = new String("ab"); // a 為?個引?
 String b = new String("ab"); // b為另?個引?,對象的內(nèi)容?樣
 String aa = "ab"; // 放在常量池中
 String bb = "ab"; // 從常量池中查找
 if (aa == bb) // true
 System.out.println("aa==bb");
 if (a == b) // false,?同?對象
 System.out.println("a==b");
 if (a.equals(b)) // true
 System.out.println("aEQb");
 if (42 == 42.0) { // true
 System.out.println("true");
 }
 }
}
  • String 中的 equals ?法是被重寫過的,因為 String 的 equals ?法比較的是對象的值。

  • 當(dāng)創(chuàng)建 String 類型的對象時,虛擬機會在常量池中查找有沒有已經(jīng)存在的值和要創(chuàng)建的值相同的對象,如果有就把它賦給當(dāng)前引?。如果沒有就在常量池中重新創(chuàng)建?個 String 對象,所以aa和bb是相同對象的引用。

  • 42和42.0用==比較的是值。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容