一、簡介
面試中經常會被問到Object類有哪些常用的方法和各自的作用,我們都知道Object類是所有類的基類,所以我們也有必要去了解它常見API,下面我們通過一張表來總結Object類有哪些常用方法以及作用:
方法返回值類型 |
方法名稱以及描述 |
protected Object |
clone() 創建並返回此對象的克隆對象,一般子類會重寫這個方法. |
boolean |
指示某個其他對象是否“等於”這個對象. |
protected void |
finalize() 當垃圾收集確定沒有對對象的更多引用時,由對象上的垃圾收集器調用 |
Class<?> |
getClass() 返回此對象的運行時Class類對象 |
int |
hashCode() 返回對象的哈希碼值 |
void |
notify() 喚醒正在此對象監視器上等待的單個線程,主要用於多線程通信中,需配合wait()方法使用 |
void |
喚醒正在此對象監視器上等待的所有線程 |
toString() 返回對象的字符串表示形式 |
|
void |
wait() 導致當前線程等待,直到另一個線程調用此對象的notify()方法或notifyAll()方法 |
void |
wait(long timeout) 導致當前線程等待,直到另一個線程調用此對象的notify()方法或notifyAll()方法,或者經過指定的時間量 |
void |
wait(long timeout, int nanos) 導致當前線程等待,直到另一個線程調用此對象的notify()方法或notifyAll()方法,或其他一些線程中斷當前線程,或已經過了一定時間 |
注意:wait()方法和notify()雖然是在多線程中使用到,需特別注意它不是Thread類的方法,注意sleep()睡眠方法纔是Thread類的,wait()和notify()、notifyall()方法是Object類的。
更多Object類的API可以參考JDK官網文檔:https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html