JavaでのString、StringBuffer、StringBuilderの違い–例を添付

公開: 2022-01-30
JavaでのString、StringBuffer、StringBuilderの違い-比較と例を添付

このJavaチュートリアルでは、Java String、StringBuffer、StringBuilderの違いについて説明します。

始めましょう:

ストリング:

Stringクラスは、文字列を表します。 「crunchify」などのJavaプログラムのすべての文字列リテラルは、このクラスのインスタンスとして実装されます。 文字列は定数です。 作成後に値を変更することはできません。

StringBuffer:

スレッドセーフで変更可能な文字シーケンス。 文字列バッファは文字列に似ていますが、変更できます。

どの時点でも、特定の文字シーケンスが含まれていますが、シーケンスの長さと内容は、特定のメソッド呼び出しによって変更できます。

文字列バッファは、複数のスレッドで安全に使用できます。

StringBuilder:

文字の可変シーケンス。 このクラスは、StringBufferと互換性のあるAPIを提供しますが、同期の保証はありません。

このクラスは、文字列バッファが単一のスレッドによって使用されていた場所でのStringBufferのドロップイン置換として使用するように設計されています(一般的にそうであるように)。

可能であれば、ほとんどの実装で高速になるため、このクラスをStringBufferよりも優先して使用することをお勧めします。

String、StringBuffer、StringBuilderの以下のすべての特性を比較してみましょう。

ストリングStringBuffer StringBuilder
スレッドセーフ? はいはい番号
同期しましたか? はいはい番号
変更可能ですか? いいえ(不変) はい(変更可能) はい(変更可能)
保管所文字列プールヒープヒープ
パフォーマンススロー速いもっと早く

Javaコード:

  • クラスを作成します:CrunchifyStringVsStringBufferVsStringBuilder.java
  • 以下のコードを入れてください
  • ファイルを保存

このチュートリアルでは、文字列の合計を199999回追加、追加しています。

IntelliJ IDEAコンソールの結果:

上記のプログラムをIntelliJIDEAまたはEclipseコンソールでJavaアプリケーションとして実行すると、次のようになります。

上記のプログラムの実行で問題が発生した場合、またはString、StringBuffer、StringBuilderの間で質問がある場合は、お知らせください。