比如建立一個字串的時候
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例項。 結論:要優先使用基本型別而不是裝箱基本型別,要當心無意識的自動裝箱。
所以要儘可能的避免建立物件。