Effective Java 學習筆記(5)

2021-05-21 15:39:48 字數 668 閱讀 6430

盡量復用物件,而不是建立新的物件,特別是當乙個物件是immutable(不可改變)的時候。

如string物件,

string s= new string(「string」);   千萬不要這樣做,因為這裡實際上建立了兩個物件。

要避免出現這樣的情況,

1是可以用靜態工廠函式,來解決,如類庫中的boolean.valueof(「true」),這種方式要優於new boolean(「true」);

2.是盡量復用物件。

看書中的例子。

public class person

}這裡,每次呼叫isbabyboomer就會建立兩個data物件,乙個calendar物件和timezone物件.

改進版:

class person

public boolean isbabyboomer()

}這個改進版把這現兩個常量作成了static,這樣,只在載入的時候建立物件,以後呼叫就不產生任何物件。

還乙個問題是要注意基本型別和物件的轉換。要注意避免寫以下的程式。以下會在加和比較的時候建立乙個long物件,這根本不是必要的。

public static void main(string args)

system.out.println(sum);

}

Effective Java 學習筆記 6

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

Effective Java 學習筆記 6

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

Effective Java 學習筆記 7

finalizer 不可計畫的,也是危險的,一般也是不必要的.不能在finalizer中放任何與依賴時間相關的操作,因為你不知道它什麼時候被執行.比如在finalizer中關閉檔案的做法就是錯誤的,根據jvm的實現方式不同,有可能導致開啟的檔案數過多而無法再開啟檔案.也不能在finalizer中改變...