面試題 Object類有多少種方法
想要更加詳細的瞭解,推薦大家去看原始碼。
java是一個龐大的知識體系,本文從java的開始,即作為面嚮物件語言最基本的類java.lang.Object開始
對於Object大家都知道是一個非常神奇的類,它是JAVA所有類的始祖,在JAVA裡每一個類都是由它間接或者直接的擴充套件而來,所以可以說Object類是上帝類,只要沒有明確的指出超類Object就被認為是這個類的超類(即在你編寫一個類的時候,若無指定父類(沒有顯式extendes一個父類)編譯器(一般編譯器完成該步驟)就會預設的新增Object為該類的父類),它位於java.lang包,該包包含java最核心基礎的類這些類的屬性和行為,是java語言的思維體現。 Object型別的變數只能用於作為各種值的通用持有者,要想對其中的內容進行具體的操作,還需要清楚物件的原始型別並進行型別裝換,在JAVA中只有基本型別不是物件,所有的陣列型別,不管是物件陣列還是基本型別的陣列都擴充套件於Object類 在編譯時會自動匯入,Object沒有定義屬性,一共有13個方法(但是有幾個函式只在處理執行緒
先看看Object類的原始碼 package java.lang; public class Object { private static native void registerNatives(); static { registerNatives(); }
public final native Class<?> getClass(); public native int hashCode(); public boolean equals(Object obj) { return (this == obj); } /本地CLONE方法,用於物件的複製。/ protected native Object clone() throws CloneNotSupportedException; /返回該物件的字串表示。非常重要的方法/ public String toString() { return getClass().getName() + “@” + Integer.toHexString(hashCode()); } /喚醒在此物件監視器上等待的單個執行緒。
對這些方法功能進行簡單的描述: (一)Object():預設構造方法 (二)clone():建立並返回此物件的一個副本 (三)equals():指示某個其他物件是否與此物件相等 (四)finalize():當垃圾回收器確定不存在對該物件的更多引用時,由物件的垃圾回收器呼叫此方法 (五)getClass():返回一個物件的執行時類 (六)hashCode():返回該物件的雜湊值 (七)notify():喚醒此物件監視器上等待的單個執行緒 (八)notifyAll():喚醒此物件監視器上等待的所有執行緒 (九)toString():返回該物件的字串表示 (十)wait():導致當前的執行緒等待,直到其它執行緒呼叫此物件的notify()或notifyAll() (十一)wait(long timeout):導致當前的執行緒等待呼叫此物件的notify()或notifyAll() (十二)wait(long timeout, int nanos):導致當前的執行緒等待,直到其他執行緒呼叫此物件的notify()或notifyAll(),或其他某個執行緒中斷當前執行緒,或者已超過某個實際時間量 (十三)registerNatives():對本地方法進行註冊