コンパイラは文字列連結を実行するときにStringBuilderを内部的に使用して文字列を追加するので、何が重要で、文字列連結がすでに機能しているのになぜStringBuilderを使用する必要があるのでしょうか。他に具体的な理由はありますか?
質問する
18535 次
2 に答える
69
StringBuilder
おっしゃるように、などの単純な文字列連結式の代わりに使用しないでくださいa + " = " + b
。後者は入力が速く、読みやすく、コンパイラはStringBuilder
とにかく内部的に使用するため、書き換えによるパフォーマンス上の利点はありません。
ただしStringBuilder
、ループ内で多数の文字列を連結する場合に役立ちます。次のコードは非効率的です。実行にはO(n 2)時間が必要であり、多くの一時文字列が作成されます。
String result = "";
for (int i = 0; i < foo.length; ++i)
{
result += bar(foo[i]); // Bad
}
代わりにこれを試してください:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < foo.length; ++i)
{
sb.append(bar(foo[i]));
}
String result = sb.toString();
コンパイラーは単純なa + b + c
式のみを最適化します。上記のコードを自動的に最適化することはできません。
于 2012-08-13T21:11:50.013 に答える
3
文字列連結が stringbuilder を内部的に使用するとどこで想定していますか? 単純な連結は最適化されるかもしれませんが、これは間違いなくそうではありません:
String s = "";
for (int i = 0; i < 1000; i++){
for (int j = 0; j < 1000; j++){
s+= "" + i + j
}
}
于 2012-08-13T21:12:34.263 に答える