Object的方法有哪些

本文內容如有錯誤、不足之處,歡迎技術愛好者們一同探討,在本文下面討論區留言,感謝。

Object介紹

  1. Object類位於java.lang包中,java.lang包包含着Java最基礎和核心的類,在編譯時會自動導入;
  2. Object類是所有Java類的祖先。每個類都使用 Object 作爲超類。所有對象(包括數組)都實現這個類的方法。可以使用類型爲Object的變量指向任意類型的對象;

Object中方法彙總

  1. getClass()
  2. hashCode()
  3. equals()
  4. wait()
  5. notify()
  6. notifyAll()
  7. finalize()
  8. toString()
  9. clone()

Object 方法介紹

getClass()

返回一個對象的class對象,class對象是描述對象所屬類的對象(就是運行時類的對象)。該方法一般配合反射使用,使用方法:Object.getClass()

hashCode()

返回對象的哈希碼值,默認在Object中的實現是返回該對象內存地址的int類型,哈希碼主要用在java.util.HashMap 散列(又叫哈希)表中。

equals()

判斷某個對象(A)是否與此對象(this)”相等“,這裏的相等是equals()方法邏輯進行判斷的,相等返回true,否則false。equals()可被重寫,但是要遵循4個特性:自反、對稱、傳遞、一致。重寫equals()必須要重寫hashCode(),如果兩個對象equals()返回true,那麼他們的hashCode必須相同。反之則不必然。基本數據類型沒有equals(),使用== 運算符進行判斷值是否相等。equals()同時也要注意在Set集合中的使用,如果對象A和對象B通過equals()返回true,那麼Set的add()方法只能保存一個對象,如果先保存對象A,在添加B時返回false,Set集合中保存的是A。

wait()

導致當前的線程等待,直到其他線程調用此對象的notify()方法或notifyAll()方法。線程進入等待狀態(WAITING),可以調用重載方法wait(timeout) 則線程會進入超時等待(TIMED_WAITING)狀態,可以在指定的時間後返回。

notify()

喚醒在此對象監視器上等待的單個線程。如果有多個線程等待一個對象,這個方法只會喚醒其中一個線程,選擇哪個線程取決於操作系統對多線程管理的實現。

notifyAll()

喚醒在此對象監視器上等待的所有線程。喚醒後的線程Entry Set鎖池中進行競爭獲取鎖,此時線程的狀態是運行(RUNNABLE)嚴格來說是就緒(ready),不過此時運行包含就緒和運行中(running)。

finalize()

當垃圾收集器確定不存在對該對象的引用時,由對象的垃圾回收器調用此方法。如果實現了這個方法,對象可能(邏輯中重新賦予一個引用)在這個方法中再次復活,從而避免被GC回收。但是這個方法不保存一定會被執行,因此不要在這個方法裏面做任何有關資源關閉的操作,否則可能出現BUG,而排查不到。

toString()

返回該對象的字符串表示。默認返回格式如下:對象class名稱 + @ + hashCode十六進制字符串

clone()

創建並返回此對象的一個副本。被克隆的對象必須實現java.lang.Cloneable接口,否則會拋出CloneNotSupportedException異常。默認使用該方法進行拷貝是:淺拷貝,只拷貝引用的地址。

關聯

Objects工具類

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