- Java在使用String時,會有一個string pool,用來存放已經建立起來的String。
String str1 = “abc”;
String str2 = ”abc”;
- 如上程式,java會在str1宣告後,在string pool建立一個abc的字串(如果沒有相同string),當str2宣告時,他就會去string pool尋找是否有相同字串,如此就不會浪費記憶體多宣告一個。
- 但程式若改成下述
String str1 = “abc”;
String str2 = new String(“abc”);
- 此時,宣告str1時java依然會去string pool先找完後再視情況新增string。但宣告str2的時候,會無條件在string pool建一個新的abc,因此而浪費記憶體。
- 在操作String時,若程式如下述
String str= “”;
For (int x=0;x<10;x++){
Str += “” + x;
}
- 對java來說,就會在string pool裡建立”1”, “2”…”9”,最後加在str中,如此相當耗費記憶體。
- 因此很多的string處理皆改成用buffer的方式來進行最好,最後才產生出string。
StringBuffer buff = new StringBuffer();
For (int x=0;x<10;x++){
buff.append(x);
}
String str = buff.toString();
文章標籤
全站熱搜
