ホームページ  >  記事  >  Java  >  Java で String の代わりに StringBuilder を使用する必要があるのはどのような場合ですか?

Java で String の代わりに StringBuilder を使用する必要があるのはどのような場合ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-17 12:14:02829ブラウズ

When Should You Use StringBuilder Instead of String in Java?

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 チュートリアル: StringBuilder](https://docs.oracle.com/javase/tutorial/java/javaOO/strings.html)
  • [StringBuilder クラス (Java プラットフォーム SE 8)](https://docs.oracle. com/javase/8/docs/api/java/lang/StringBuilder.html)
  • [StringBuffer と StringBuilder Java -簡易チュートリアル](https://dzone.com/articles/stringbuffer-vs-stringbuilder-java-simplified-t)

以上がJava で String の代わりに StringBuilder を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。