jdk8源碼學習之Object

一、前言

工作了兩年多發現自己的水平提高有限,趁有時間閱讀一下源碼提高一下自己,也沉澱一下技術。那麼就先從jdk的源碼開始吧。

二、Object類

Object 類屬於 java.lang 包,此包下的所有類在使用時無需手動導入,系統會在程序編譯期間自動導入。Object 類是所有類的基類,當一個類沒有直接繼承某個類時,默認繼承Object類,也就是說任何類都直接或間接繼承此類,Object 類中能訪問的方法在所有類中都可以調用。

構造方法

  1. 系統默認創造一個無參構造方法

registerNatives 方法

    // 類加載時註冊native方法
    private static native void registerNatives();
    static {
        registerNatives();
    }

 

equals()

    public boolean equals(Object obj) {
        return (this == obj);
    }

在 Object 類中,== 運算符和 equals 方法是等價的,都是比較兩個對象的引用是否相等,對於我們自定義的一個對象,如果不重寫 equals 方法,那麼在比較對象的時候就是調用 Object 類的 equals 方法

getClass()

public final native Class<?> getClass();

該方法的作用是返回一個對象的運行時類,通過這個類對象我們可以獲取該運行時類的相關屬性和方法,也就是java中的反射,各種通用的框架都是利用反射來實現的。

hashCode()

public native int hashCode();

toString()

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

getClass().getName()是返回對象的全類名(包含包名),Integer.toHexString(hashCode()) 是以16進制無符號整數形式返回此哈希碼的字符串表示形式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章