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

zhumeilu發表於2017-12-14

比如建立一個字串的時候

String s = new String("123");
複製程式碼

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

String s = "123";
複製程式碼

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

自動裝箱示例:

Long sum = 0;
for(long i=0;i<Integer.MAX_VALUE;i++){
  sum+=i;
}

複製程式碼

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

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

相關文章