StringBuilder の詳細: Java の不変 String の代替手段
Java の String クラスは堅牢な機能を提供しますが、StringBuilder の導入により次のような疑問が生じる可能性があります。別の文字列中心のクラスが必要です。 2 つの違いを詳しく見てみましょう。
可変性とパフォーマンス
不変の String とは異なり、StringBuilder では内部の文字配列を変更できます。この可変性により、複数の要素を追加するときにパフォーマンスが大幅に向上します。
次のシナリオを考えてみましょう:
String str = ""; for (int i = 0; i < 500; i ++) { str += i; }
各反復で新しい String オブジェクトが作成され、その結果、500 個の不要な割り当てが発生します。対照的に、StringBuilder を使用すると、
StringBuilder sb = new StringBuilder(); for (int i = 0; i < 500; i ++) { sb.append(i); }
文字配列が直接変更され、新しいオブジェクトの作成が回避されます。
Automatic StringBuilder Conversion
In ' ' 演算子を使用して複数の文字列連結が実行される場合、コンパイラは式を自動的に次の形式に変換します。 StringBuilder の連結:
String d = a + b + c; // becomes String d = new StringBuilder(a).append(b).append(c).toString();
StringBuffer と StringBuilder
StringBuilder に加えて、Java は StringBuffer を提供します。主な違いは同期にあります。 StringBuffer には同期メソッドがありますが、StringBuilder には同期メソッドがありません。ローカル変数の場合は、効率を向上させるために StringBuilder を推奨します。ただし、マルチスレッドが関係する場合は、スレッド セーフのために StringBuffer の使用を検討してください。
さらなる調査のためのリソース
StringBuilder の機能をさらに詳しく調べるには、次の手順を実行します。
以上がJava で String の代わりに StringBuilder を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。