天天看點

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還沒有快到耗盡記憶體的地步,它是不會浪費時間進行垃圾回收的。