1、Object類中的equals方法
顯而易見,自定義的沒有重寫equals方法的類在使用equals方法時與==沒什麼差别
2、預定義類中的equals方法
預定義類中的equals方法大多都有自己的算法,如上是String類重寫後的equals方法,不僅包含了==的效果,還做了其他的操作,實作了比較字元的效果
拓展
一、equals方法應具有以下特性
1.自反性:對于任何非空引用x,x.equals(x)應該傳回true。
2.對稱性:對于任何引用x和y,當且僅當y.equals(x)傳回true時,x.equals(y)傳回true。
3.傳遞性:對于任何引用x、y和z,如果x.equals(y)傳回true,y.equals(z)傳回true,x.equals(z)也應該傳回true。
4.一緻性:如果x和y引用的對象沒有發生變化,反複調用x.equals(y)應該傳回同樣的結果。
5.對于任意非空引用x,x.equals(null)應該傳回false。
二、instanceof關鍵字
如果用僞代碼描述:
例如 if( obj instanceof T )
如果obj不為空,并且轉換T類型不抛異常,則結果為true,否則為false
三、引用類型的強制轉換
子類可以非常自然地轉換成父類,但是父類轉換成子類則需要強制轉換,并且他們之間的強制類型轉換是有條件的。
如果父類引用的是子類對象,則可以成功強制轉換
如果父類引用的是他本身或者其他子類,就會報錯
參考連結:https://www.cnblogs.com/chenssy/p/3393160.html