Java 中Object類中方法

Object類是所有類的最終父類,其內部封裝了一些方法,之前瞭解不夠,專門總結如下。

1. hashCode()

此方法通過哈希映射,通過對象的相關信息(對象存儲物理地址,字段信息等)映射爲一個數值,這個數值稱之爲散列值。
這個散列值通常同於在集合中對象的重複性檢查,因爲集合中不允許出現重複的對象,所以再添加前通常要檢查集合內是否已存在對象,一種方案是通過equals,與集合中元素逐個比較,但當集合中元素過多時,這種方案會非常影響系統運行效率,其實集合中內置了一個table,其中保存了集合中所有對象的hashCode()值,如果hashCode值相等後再調用equals()進行比較,這種方案的效率會遠高於直接使用equals();

hashCode()方法的重寫
hashCode()方法允許重寫,但是重寫的方法需滿足以下要求

  1. 在程序運行過程中,同一個對象多次調用hashCode()方法應該返回相同的值。
  2. 當兩個對象通過equals()方法比較返回true時,則兩個對象的hashCode()方法返回相等的值。
  3. 對象用作equals()方法比較標準的Field,都應該用來計算hashCode值。

2. clone()

此方法快速生成已有對象的副本,這是一個native方法(用C++寫的),native方法執行效率高於Java內的方法,所以在複製一個對象一般採用clone()方法,而不是new一個對象,再將對象的值寫入

3. finalize()

垃圾回收器準備釋放內存的時候,會先調用finalize()。

  1. 對象不一定會被回收。
  2. 垃圾回收不是析構函數。
  3. 垃圾回收只與內存有關。
  4. 垃圾回收和finalize()都是靠不住的,只要JVM還沒有快到耗盡內存的地步,它是不會浪費時間進行垃圾回收的。
發佈了39 篇原創文章 · 獲贊 46 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章