文字列の結合(StringBuilder、StringBuffer)
String文字列の結合する際、下記のような書き方をするといちいちStringオブジェクトを作成してしまいリソースを食ってしまう。
String conbStr= ""; for (String str: strArray) { conbStr += str + " "; }
Stringは不変のオブジェクトなので3行目で「" "」のStringオブジェクトと「str + " "」のStringオブジェクトがループの度に新たに作成され、メモリ上に残る。
ではどうしよう。
こうする。
StringBuilder sb= new StringBuilder(); for (String str : strArray) { sb.append(str); sb.append(" "); }
これでStringオブジェクトは毎回作成されることはない。
また、同期処理が必要な場合と不要な場合で使用するクラスが異なる。
- 同期処理が不要な場合
- StringBuilderクラス
- 同期処理が必要な場合
- StringBufferクラス