この記事では、Java の String と StringBuffer の違いについて説明します。 (違いの比較)、必要な友人が参考になれば幸いです。
String と StringBuffer はどちらも java の文字操作用のクラスです。
特に String では、同様のものがよく見られます。割り当てコード String str = "Hello World" は、int のように見えますが、Java の基本的なデータ型であると考えられています。実際には、String はクラスであり、基本的なクラスと同様に直接割り当てることができる特別なクラスです。データ・タイプ。
Java には、文字を操作できるクラスが 3 つあります。
(1) Character は、単一文字の操作を実行するクラスです。
(2) String は、文字列を操作する不変クラスです。
(3) StringBuffer も文字列を操作しますが、これは変数クラスです。
StringBuffer オブジェクトの内容は変更できますが、String オブジェクトが生成されると、変更したり再割り当てしたりすることはできません。 . 実際には、オブジェクトが 2 つあります。
String はオブジェクトであり、プリミティブ型ではありません。不変オブジェクトであり、一度作成されると、その値は変更できません。
既存の String オブジェクトを変更するには、実際に新しいオブジェクトを作成し、その中に新しい値を保存します。
String は最終クラスであり、継承できません。
StringBuffer は変更可能なオブジェクトであり、String のように再確立されることはありません。コンストラクターを通じてのみ確立できます。オブジェクトの作成後、メモリ領域が割り当てられ、最初に null が保存されます。 StringBuffer に値を割り当てるときは、その append メソッドを使用できます。 obj.append("hello");
StringBuffer は、文字列接続操作において String よりも効率的です。
プログラムで頻繁に変更や文字列の接続操作が必要な場合は、StringBuffer を使用した方がパフォーマンスが高くなります。
String クラスには、既存の文字列内の特定の文字を変更するメソッドはありません。Java 文字列内の 1 文字を変更することはできないため、JDK では次のように記述されています。 String クラスのオブジェクトは不変であること。
ただし、不変文字列には大きな利点があります。それは、コンパイラが文字列を共有できることです。
StringBuffer はスレッドセーフであり、マルチスレッド プログラムで簡単に使用できますが、プログラムの実行効率は比較的遅くなります。
StringBuffer クラスのメソッドは、追加、挿入、削除などの文字列の変更に重点を置いています。これが StringBuffer クラスと String クラスの主な違いでもあります。
String str = new String("Hello World");str = "hello world";この文字列接続の処理プロセス:
(1) StringBuffer を作成します。
(2) append() メソッドを呼び出します。
(3) 最後に、StringBuffer は toString() を呼び出して、 String の値 ##(4) この観点から見ると、String の接続操作は StringBuffer よりも多くの操作が必要となり、効率が悪くなります。
(5) また、String は immutable オブジェクトであるため、代入されるたびに新しいオブジェクトが作成されるため、元のオブジェクトは役に立たずにガベージコレクションされてしまい、パフォーマンスにも影響します。
以上がJavaのStringとStringBufferの違いは何ですか? (差分比較)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。