EJ 05 避免建立不必要的物件

2021-09-01 21:26:54 字數 825 閱讀 4238

極端的反面例子,每次執行都會建立乙個新的string例項:

string s = new string("stringette");  // don't do this!
建議:

string s = "stringette";

遺留任務:

boolean.valueof(string)總是優先於構造器boolean(string),確認valueof的實現;

boolean b = true,確認語句的實現,是否會建立物件。

反面的例子,方法每次呼叫都會建立乙個calendar、乙個timezone和兩個date物件:

public class person 

}

建議:

public class person 

public boolean isbababoomer()

}

// hideously slow program! can you spot the object creation?

public static void main(string args)

system.out.println(sum);

}

遺留任務:學習自動裝箱。

遺留任務:

學習ej.39時,注意「保護性拷貝(defensive copying)」的內容,並總結兩者的區別。

避免建立不必要的物件

下面是乙個比較微妙也比較常見的反面的例子,其中涉及可變的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 該語句每次被...