《Effective Java 學習筆記 第二章》

2021-08-04 22:53:17 字數 600 閱讀 1827

1.覆蓋equals時請遵守通用約定

自反性:對於任何非null的引用值x,x.equals(x)必須返回true

對稱性:對於任何非null的引用值x和y,當且僅當x.equals(y)返回true時,y.equals(x)返回true

傳遞性:對於任何非null的引用值x、y、z,如果x.equals(y)返回true,並且y.equals(z)返回true,那麼x.equals(z)一定返回true

一致性:對於任何非null的引用值x和y,只要equals在操作中引數沒有改變,那麼多次呼叫返回的結果必須一致。

2.覆蓋equals時總要覆蓋hashcode

如果兩個物件根據equals返回的結果為true,那麼他們通過hashcode返回的雜湊碼也必須相等。

3.始終要覆蓋tostring

預設的tostring放回的是類的名稱加上「@」符號,以及該物件的雜湊值的十六進製制表示,不易於閱讀。

4.謹慎地覆蓋clone

5.考慮實現comparable介面

Effective Java 學習筆記 6

及時消除不使用的物件的引用,理論上,帶有記憶體管理的語言是不存在記憶體洩漏的,但是如果對物件的操作不當,也是可能會造成記憶體洩漏.如有乙個stack,其pop函式如下.public object pop if element.length 0 return null return element s...

Effective Java 學習筆記(5)

盡量復用物件,而不是建立新的物件,特別是當乙個物件是immutable 不可改變 的時候。如string物件,string s new string string 千萬不要這樣做,因為這裡實際上建立了兩個物件。要避免出現這樣的情況,1是可以用靜態工廠函式,來解決,如類庫中的boolean.value...

Effective Java 學習筆記 6

及時消除不使用的物件的引用,理論上,帶有記憶體管理的語言是不存在記憶體洩漏的,但是如果對物件的操作不當,也是可能會造成記憶體洩漏.如有乙個stack,其pop函式如下.public object pop if element.length 0 return null return element s...