Study of Java-Object類
在Java中,只有基本資料型別不是物件,而所有物件歸屬的型別都擴充套件自Object類。因此,對Object類的學習就顯得非常重要。本篇文章主要介紹Object類的幾個重要方法:equals方法,hashcode方法,以及toString方法。
1. Object類的equals方法
equals方法的功能是檢測兩個物件是否相等。需要特別注意的是,Object類對這個方法預設的操作是判斷兩個物件的引用是否相同。然而對於很多情況下,我們所需要的是判斷兩個物件的狀態或值是否相等,這時我們就需要對equals方法做override,需要注意的是,這個過載也要滿足幾個原則才能保證正確性和合理性。
1) 自反性 2) 對稱性 3) 傳遞性 4)一致性
前三點是等價性通常的三條原則,都比較容易理解。這裡對於第四點的“一致性”稍加解釋:如果x和y引用的物件沒有發生變化,那麼反覆呼叫x.equals(y)(或y.equals(x))應該返回同樣的結果。
另外在日常程式設計過程中,如果需要對陣列型別的域做相等性判斷,可以使用Arrays.equals方法,這個方法會檢測陣列元素是否相等。
2. Object類的hashCode方法
hashCode方法是由物件映射出相應的雜湊碼。注意,Object類預設的hashCode方法返回的雜湊碼是物件的儲存地址。
同樣,在很多情況下我們需要override該hashCode方法,因為equals方法與hashCode方法的定義必須一致。這裡所說的一致指的是:如果x.equals(y)的值為真,那麼x.hashCode()與y.hashCode()返回的雜湊值就必須相同。
在日常程式設計過程中,對於陣列型別的域,可以用Arrays.hashCode方法計算雜湊碼,與Arrays.equals方法配合使用。
3. Object類的toString方法
toString方法是Object類定義的又一個基礎且重要的方法,它返回一個表示物件的字串。Object類對toString方法也有預設操作,多是類名加上域值。toString方法作為一種常見且有效的除錯方法,程式設計師可以定義自己的toString方法。並且自定義toString方法是被強烈推薦的,這樣可以將關鍵資訊的描述非常方便得展現出來。
綜上,對於這三個重要的方法,Object類都有預設的操作。我們首先要了解這些預設操作是怎麼做的,它們的特點是什麼樣的。這樣,當我們需要對這些方法進行過載時,遵循著一定的原則,就能根據自己的需要對它們進行改造。