• 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”);

  • 此時,宣告str1java依然會去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();

文章標籤
全站熱搜
創作者介紹
創作者 y23462001 的頭像
y23462001

y23462001的部落格

y23462001 發表在 痞客邦 留言(0) 人氣(405)