onsen code monkey

個人的な日記とプログラミング備忘録です

【Java】ループの中で+を使用して文字列を連結してはいけない

ループの中で+を使用して文字列を連結するとループの度にStringを生成するので回数が増えるほどOutOfMemoryしたり処理が遅くなる可能性が高くなる。

public static void main(String[] args) {
    String hoge = "";
    for (int i=0; i<10; i++) {
        hoge += "(^q^)";
    }
    System.out.println(hoge);
}

以下のようにStringBuilderを使えば問題なし。

public static void main(String[] args) {
    StringBuilder hoge = new StringBuilder();
    for (int i=0; i<10; i++) {
        hoge.append("(^q^)");
    }
    System.out.println(hoge.toString());
}

C#でも同じだった気がする。
でもJavaScriptでは+=で連結したほうが速い。というかStringBuilder的なものがないっぽい。