1. 程式人生 > >JAVA基礎:“==”和“equals”的區別

JAVA基礎:“==”和“equals”的區別

“==“:

==如果是比較引用型別,則是比較兩個引用是否是指向同一個物件。

"equals": 如果引用equals的類沒有重寫equals方法,則equals方法和==是一樣的意思,即比較兩個引用地址是否相等。如果重寫,則一般比較的是物件的內容是否相等,具體的視重寫的方法而定。

Integer a = new Integer(1);
Integer b = new Integer(1);
a==b為false,equals為true。
因為a和b分別new了兩個物件,所以兩個物件的地址是不同的,==為false。equals為ture是因為Integer重寫了equals方法。所以直接
比較物件的值。
這是Integer類的原始碼中的equals方法,可以看到,當a.equals(b)時,則是先判斷b是不是Integer的例項,如果是,則把b強制轉換
成integer進行數值比較,如果數值相同則為true
上面的輸出為false,因為c並沒有重寫equals方法,所以相當於是c==cc,比較的記憶體地址,所以為false
"=="比較基本型別如int的時候,則是比較的值相當。
上面返回true,因為s1建立時,常量池裡面有了字串123,所以當s2建立的時候,則s2直接指向字串123,所以兩個是相等的。這點
要注意