第5條 避免建立不必要的物件

2021-09-11 09:47:02 字數 520 閱讀 7824

比如建立乙個字串的時候

string s = new string("123");

複製**

這是就建立了兩個物件 我們可以

string s = "123";

複製**

對於同時提供了靜態工廠方法和構造器的不可變類,通常可以使用靜態工廠方法而不是構造器,以避免建立不必要的的物件。 例如靜態工廠方法boolean.valueof(string)幾乎總是優先於構造器boolean(string)。構造器在每次被呼叫的時候都會建立乙個新的物件,而靜態工廠方法則從來不要求這樣做,實際上也不會這樣做。

自動裝箱示例:

long sum = 0;

for(long i=0;i複製**

變數sum被宣告成long而不是long,意味著程式構造了大約2^31個多餘的long例項。 結論:要優先使用基本型別而不是裝箱基本型別,要當心無意識的自動裝箱。

所以要盡可能的避免建立物件。

避免建立不必要的物件

下面是乙個比較微妙也比較常見的反面的例子,其中涉及可變的date物件,他們的值一旦計算出來之後就不再變化。這個類建立了乙個模型 其中有乙個人,並有乙個isbabyboomer方法,用來檢驗這個人是否為乙個babyboomer,換句話說,就是檢驗這個人是否出生於1946年至1964年之間。public...

避免不必要的物件

一般來說,最好能重用物件而不是在每次需要的時候就建立乙個相同功能的新物件。重用方式既快速,又流行。如果物件是不可變的,它就始終可以被重用。最為乙個極端的反面例子,考慮下面的語句 string s new string string don t do this 該語句每次被執行的時候都建立乙個新的st...

建議 避免建立不必要的物件。

一般來說,最好能重用物件而不是在每次需要的時候就建立乙個相同功能的新物件。重用方式既快速,又流行。如果物件時不可變的 immutable 它就始終可以被重用。作為乙個極端的反面例子,考慮下面的語句 string s new string stringette don t do this 該語句每次被...