定義
是所有類的直接或者間接父類,是 Java 中唯一一個沒有父類的類。其中所有的方法都是可以被子類繼承的。
常用方法
- equals方法:?比較兩個對象引用的地址值是否相同,默認情況下是使用 “==” 進行比較,但是這個方法一般會被之類重寫,如下圖是?String?類型的 equals 方法,他對父類的方法進行了重寫,比較的是值而非地址值。
public class Main {public static void main(String[] args) {String str1 = new String("abc");String str2 = new String("abc");System.out.println(str1.equals(str2)); // trueSystem.out.println(str1 == str2); // false}}
- hashCode方法:?hashCode (哈希碼|散列碼) 是一種編碼方式。每個對象都會繼承這個方法如果不重寫,那么他會將對象地址值轉為 int 數組進行返回。hashCode 的作用就是確定對象在 Hash表中的索引位置,提高查詢效率。
建議: hashCode 和 equals 方法應該同時被重寫。應為? hashCode 是為了提高查詢效率,但是可能會產生 hash 沖突(兩個對象 hashCode 相同),此時 需要重寫 equals 來判斷兩個對象是否值相同(原始是比較地址),如果相同則不插入,不相同則以鏈表(具體實現可以百度一下)來處理這個 hash 沖突。這個不會寫沒有關系,可以使用快捷鍵? Auto + Insert?幫我們自動生成。
- toString 方法:?打印對象會自動調用 toString 方法,如果不重寫這回調用 Object 默認的。一般我們會按照我們自定義的方式重寫該方法。當然也可以使用快捷鍵?Auto + Insert?幫我們自動生成。
- native 方法:?native?修飾的方法,只說明不實現。Java 只能調用這個方法,但是不能查看和修改。
- clone 方法:
- 創建一個和當前對象相同的對象(屬性相同),和?“=” 賦值操做不同,clone 方法是直接創建了一個副本,開辟了一個新的地址用來存拷貝后的對象,賦值操做只是將兩個引用指向同一塊地址。
- clone 由淺拷貝和深拷貝的區分,當對象類屬性存在引用類型時可見,雖然執行拷貝后的兩個對象在不同地址,但是里面引用類型變量確實指向同一塊地址(淺拷貝)。所以對于引用類型的屬性,應該做深拷貝(將其中引用類型同樣再拷貝一份)。
- 代碼編寫要求:
- 必須要實現 Cloneable 接口(標識性接口)。
- 重寫 clone 方法,用?public 修飾。
- 要處理 CloneNotSupportedException 異常。