String ではなく StringBuilder を使用する理由
Java の強力なクラスである String を使用すると、追加が可能になります。ただし、String の機能にもかかわらず、StringBuilder と呼ばれる別個のクラスが特定の理由から登場しました。
不変性と可変性
根本的な違いは、String と StringBuilder の性質にあります。文字列は不変です。つまり、文字列の内部状態は変更できません。文字列に対して実行される各操作により、新しいオブジェクトが作成されます。これは、繰り返しの連結を伴う操作では非効率的になる可能性があります。
逆に、StringBuilder は変更可能です。 StringBuilder に追加すると、新しいオブジェクトを作成するのではなく、内部の char 配列が変更されます。これにより、文字列操作のパフォーマンスが大幅に向上します。
効率
次のコードを考えてみましょう:
String str = ""; for (int i = 0; i < 500; i++) { str += i; }
このコード スニペットは、500 個の新しい String オブジェクトを作成します。 、非効率的です。代わりに StringBuilder を使用すると、
StringBuilder sb = new StringBuilder(); for (int i = 0; i < 500; i++) { sb.append(i); }
変更される StringBuilder オブジェクトは 1 つだけになり、パフォーマンスが大幅に向上します。
最適な使用法
while StringBuilderは連結の効率が高くなりますが、コンパイラは特定の文字列式を自動的に次のように変換することに注意することが重要です。複数のオブジェクトの作成は避けてください。例:
String d = a + b + c; // implicit use of StringBuilder
スレッドの安全性が懸念される場合は、同期メソッドを提供する StringBuffer の使用を検討してください。
以上がString ではなく StringBuilder を選択する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。