ぺーぺーSEのブログ

備忘録・メモ用サイト。

文字列の結合(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クラス