StringBufferとStringBuilder:StringBufferとStringBuilderの違い

公開: 2020-10-20

Javaでプログラミングする場合、文字列は最もよく使用されるクラスの1つです。 文字列は、文字のシーケンスを表現するときに使用されるオブジェクトです。 それらにはいくつかのプロパティがあり、そのうちの1つは不変性です。つまり、変更することはできません。 これに取り組むために、Javaに文字列バッファと文字列ビルダーが導入されました。 これらのクラスを使用すると、変更を何度も繰り返すことができます。

この記事では、これらのクラスの両方を実行し、それらの違いについて説明します。 クラスに飛び込む前に、Javaの文字列の概念をよく理解しておく必要があります。

目次

Javaの文字列

文字列は、文字値のシーケンスを格納するためにJavaで使用されます。 これらは、Javaプログラミング言語ではオブジェクトとして扱われます。 文字列を作成および操作するためのさまざまなオプションがあります。

文字列を作成するための基本的な構文は次のとおりです。

文字列文="Hello、world!";

文字列にはいくつかのプロパティがあり、そのうちの1つは不変であるということです。つまり、文字列は変更できません。 しかし、変更可能な文字列が必要な場合はどうでしょうか。 そのために、文字列バッファおよび文字列ビルダーと呼ばれるJavaの変更が使用されます。 文字列とは何かを理解したので、比較を進めます。

必読: Javaプロジェクトのアイデアとトピック

世界のトップ大学からオンラインでソフトウェアコース学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

StringBuffer

文字列バッファは、可変性などの特性を与えることによって文字列に機能を追加するためにJavaで使用されるクラス変更です。 文字列を変更するには、append()、insert()、reverse()、replace()などのメソッドを使用できます。 StringBufferには4つのコンストラクターが定義されています。 それらは次のとおりです。

  • StringBuffer():これにより、16文字の容量を持つ特性のない空の文字列バッファが作成されます。
  • StringBuffer(CharSequence chars ):指定されたCharSequenceと同じ文字を含むStringBufferを作成します。
  • StringBuffer(int size):これは、指定された初期容量を持つ文字を含まないStringBufferを構築します。
  • StringBuffer(String str ):最初に指定された文字列を使用してStringBufferオブジェクトを作成します。

StringBufferで特定の文字列を変更するために使用できるさまざまなメソッドのいくつかについて説明します。

  • Length()とcapacity(): StringBufferの現在の長さは、length()メソッドを使用して見つけることができますが、合計容量を見つけるには、capacity()メソッドを使用します。
  • append(): append()メソッドは、文字列を他のまたは同様のデータ型と連結するために使用されます。 このメソッドを使用して、文字列、数値、およびオブジェクトを文字列に追加できます。
  • Insert():このメソッドは、ある文字列を別の文字列に挿入するために使用されます。
  • charAt():このメソッドは、StringBuffer内の単一文字の値を検索するために使用されます。

StringBufferを使用して、必要に応じて文字列を変更する方法を確認できます。 では、StringBufferでそのような機能を取得できるのに、なぜStringBuilderを使用するのでしょうか。

学ぶ:初心者向けのトップ20のトレンドAndroidプロジェクトのアイデアとトピック

StringBuilder

JavaのStringBuilderは、可変文字のシーケンスです。 StringBuilderは、文字列が不変であることがわかっているため、変更可能な文字列を作成するための代替クラスを提供します。 これはStringBufferと非常に似ていますが、これら2つが異なるのは同期です。 StringBuilderは同期されていません。つまり、スレッドセーフではありません。 StringBuilderには、4つのコンストラクターも定義されています。 それらは次のとおりです。

  • StringBuilder(): 16文字のスペースを持つ空のStringBuilderを作成します。
  • StringBuilder(int size):指定されたサイズの空の文字列を作成します。
  • StringBuilder(CharSequence seq):指定されたCharSequenceと同じ文字を含むStringBuilderを作成します。
  • StringBuilder(String str ):最初に指定された文字列strを使用してStringBuilderオブジェクトを作成します。

StringBuildersで使用できるいくつかのメソッドについて説明します。

  • append():このメソッドは、文字列、数値、オブジェクトのいずれであっても、文字列に何かを追加する場合に使用されます。
  • Replace():文字列を別の文字セットから置き換える場合は、replace()メソッドを使用できます。
  • Substring():文字列の一部を取得する場合は、substring()メソッドを使用して取得できます。

ご覧のとおり、StringBufferとStringBuilderは同じように見えます。 機能は似ていますが、まったく異なるため、多くの場合、どちらか一方を使用した方がよい場合があります。

2つのクラスの違い

同期

デフォルトでは、StringBufferは同期されますが、StringBuilderには同期がありません。 複数のスレッドから文字列にアクセスする必要があり、外部同期が適用されていない場合は、StringBuilderではなくStringBufferを使用する必要があります。

スレッドセーフ

StringBuilderはスレッドセーフなクラスではありませんが、StringBufferにはこの特性があります。 これは、StringBufferが同期されているためです。

スピード

上記の2つの特性により、StringBufferはStringBuilderに比べて低速です。 したがって、より高速なパフォーマンスが必要で、上記の特性を必要としない場合は、StringBuilderの速度と効率がより適切な選択になります。

StringBuilderは、StringBufferの欠点を分析することによってJava 1.5で導入され、前者がパフォーマンスに影響を与える可能性がある特定の状況で使用できるようにするための十分な変更が加えられています。

パフォーマンスとメモリ消費

上記のポイントから学ぶことができるように、StringBuilderは、StringBufferと比較してパフォーマンスに関しては高速です。 StringBufferが後者と比較してより多くのメモリを消費する場合、2つの間のメモリ消費も異なります。

また読む:トップ130以上のJavaインタビューの質問と回答

まとめ

StringBuilderはStringBufferのような文字列クラスの代替として分類されますが、使用法に関してははるかに柔軟性があります。

したがって、デフォルトで不変の文字セットである文字列を変更する場合は、文字列を変更する機能を提供するStringBufferクラスまたはStringBuilderクラスを使用する必要があることがわかります。 ご覧のとおり、両方のクラスは表面的には類似しており、同じメソッドと類似したコンストラクターを使用しています。

2つの違いは、同期とスレッド化にあります。 スレッドセーフを気にしない環境で作業している場合は、StringBuilderを使用するとはるかに高速で効率的になりますが、スレッドセーフが必要な場合は、同期されてスレッドセーフであるStringBufferを使用する必要があります。安全。

Java、フルスタックソフトウェア開発の詳細に興味がある場合は、upGrad&IIIT-Bのソフトウェア開発のエグゼクティブPGプログラム–サイバーセキュリティの専門分野をチェックしてください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニングを提供します。 9以上のプロジェクトと割り当て、IIIT-B卒業生のステータス、実践的なキャップストーンプロジェクト、トップ企業との雇用支援。

あなたの夢の仕事に着陸

コンピュータサイエンスの理学修士に申し込む