2019-04-25 java.lang.Object

Object 對象 所有類的基類

java是單根繼承語言,Object就是所有類的基類或根類,所有的類都繼承自Object

構成

主要由是一個方法構成,其中包含部分 final native的方法

最開始又一個native方法registerNatives native修飾的方法為提供外部實現(xiàn)的方法,方法調用時真正運行的是外部實現(xiàn),并且通過一個靜態(tài)初始化塊初始化了該方法

private static native void registerNatives();
    static {
        registerNatives();
}

然后同樣是native修飾的getClass方法和hashCode方法

//返回當前運行時對象的Class對象
public final native Class<?> getClass();
//該方法返回對象的哈希碼,主要使用在哈希表中,比如JDK中的HashMap。
public native int hashCode();

判斷是否是同一個對象 地址比較

//比較兩個對象是否相等。Object類的默認實現(xiàn),即比較2個對象的內存地址是否相等:
public boolean equals(Object obj) {
        return (this == obj);
    }

又是一個native修飾的方法clone

//創(chuàng)建并返回當前對象的一份拷貝
protected native Object clone() throws CloneNotSupportedException;

對象以字符串方式表示 toString方法,默認該方法是反饋類名稱@分隔然后加上Object的hashCode值的16進制表示

//Object對象的默認實現(xiàn),即輸出類的名字@實例的哈希碼的16進制:
public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

native方法notify和notifyAll和wait

//喚醒一個在此對象監(jiān)視器上等待的線程(監(jiān)視器相當于就是鎖的概念)。如果所有的線程都在此對象上等待,那么只會選擇一個線程。選擇是任意性的,并在對實現(xiàn)做出決定時發(fā)生。一個線程在對象監(jiān)視器上等待可以調用wait方法。
public final native void notify();
//跟notify一樣,唯一的區(qū)別就是會喚醒在此對象監(jiān)視器上等待的所有線程,而不是一個線程。
public final native void notifyAll();
//wait方法會讓當前線程等待直到另外一個線程調用對象的notify或notifyAll方法,或者超過參數設置的timeout超時時間。
public final native void wait(long timeout) throws InterruptedException;

然后是兩個public方法wait

//跟wait(long timeout)方法類似,多了一個nanos參數,這個參數表示額外時間(以毫微秒為單位,范圍是 0-999999)。 所以超時的時間還需要加上nanos毫秒。
public final void wait(long timeout, int nanos) throws InterruptedException {
        if (timeout < 0) {
            throw new IllegalArgumentException("timeout value is negative");
        }

        if (nanos < 0 || nanos > 999999) {
            throw new IllegalArgumentException(
                                "nanosecond timeout value out of range");
        }

        if (nanos > 0) {
            timeout++;
        }

        wait(timeout);
    }

//跟wait(long timeout)方法類似 
public final void wait() throws InterruptedException {
        wait(0);
    }

一個protected的finalize方法

//該方法的作用是實例被垃圾回收器回收的時候觸發(fā)的操作,就好比 “死前的最后一波掙扎”。
protected void finalize() throws Throwable { }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一:java概述:1,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境,java的開發(fā)工...
    ZaneInTheSun閱讀 2,812評論 0 11
  • Object類是Java中其他所有類的祖先,沒有Object類Java面向對象無從談起。作為其他所有類的基類,Ob...
    時待吾閱讀 563評論 0 1
  • 對象的創(chuàng)建與銷毀 Item 1: 使用static工廠方法,而不是構造函數創(chuàng)建對象:僅僅是創(chuàng)建對象的方法,并非Fa...
    孫小磊閱讀 2,184評論 0 3
  • 面向對象主要針對面向過程。 面向過程的基本單元是函數。 什么是對象:EVERYTHING IS OBJECT(萬物...
    sinpi閱讀 1,220評論 0 4
  • 孤獨時 我是我的王 紅塵中 我就是那一粒塵埃
    YZjsf閱讀 139評論 0 1

友情鏈接更多精彩內容