1. ホーム
  2. java

[解決済み] JavaでStringBuilderを使うタイミング【重複】について

2022-03-25 18:04:27

質問

を使うのが一般的に好ましいとされています。 StringBuilder は、Java の文字列の連結に使用されます。これは常にそうなのでしょうか?

どういうことかというと、こういうことです。を作成するオーバーヘッドが大きいかどうかです。 StringBuilder オブジェクトを呼び出し append() メソッドを実行し、最後に toString() で既存の文字列を連結すると、すでに小さくなっています。 + 演算子は、2つの文字列に対して有効なのでしょうか?

もしそのような閾値があるとしたら、それは何に依存するのでしょうか(おそらく文字列の長さでしょうが、どのような方法で)?

また、最後に + のパフォーマンスと比較して StringBuilder 2つ、3つ、4つの文字列のような小さな場合では?

の明示的な使用 StringBuilder において、通常の連結は時代遅れであると述べられています。 廃止されたJava最適化のヒント と同様に Java都市伝説 .

どうすれば解決するの?

ループ内でString concatenationを使用する場合、以下のような感じになります。

String s = "";
for (int i = 0; i < 100; i++) {
    s += ", " + i;
}

という場合は StringBuilder (ただし StringBuffer の代わりに String なぜなら、その方がより高速で、より少ないメモリを消費するからです。

ステートメントが1つの場合。

String s = "1, " + "2, " + "3, " + "4, " ...;

とすると String を使うので、コンパイラは StringBuilder を自動生成します。