ホームページ  >  記事  >  Java  >  JavaのStringとStringBufferの違いは何ですか? (差分比較)

JavaのStringとStringBufferの違いは何ですか? (差分比較)

不言
不言オリジナル
2018-09-18 17:19:438136ブラウズ

この記事では、Java の String と StringBuffer の違いについて説明します。 (違いの比較)、必要な友人が参考になれば幸いです。

序文

  1. String と StringBuffer はどちらも java の文字操作用のクラスです。

  2. 特に String では、同様のものがよく見られます。割り当てコード String str = "Hello World" は、int のように見えますが、Java の基本的なデータ型であると考えられています。実際には、String はクラスであり、基本的なクラスと同様に直接割り当てることができる特別なクラスです。データ・タイプ。

  3. Java には、文字を操作できるクラスが 3 つあります。

(1) Character は、単一文字の操作を実行するクラスです。
(2) String は、文字列を操作する不変クラスです。
(3) StringBuffer も文字列を操作しますが、これは変数クラスです。

Java の String クラスと StringBuffer クラスの違い

  1. StringBuffer オブジェクトの内容は変更できますが、String オブジェクトが生成されると、変更したり再割り当てしたりすることはできません。 . 実際には、オブジェクトが 2 つあります。

  2. String はオブジェクトであり、プリミティブ型ではありません。不変オブジェクトであり、一度作成されると、その値は変更できません。

  3. 既存の String オブジェクトを変更するには、実際に新しいオブジェクトを作成し、その中に新しい値を保存します。

  4. String は最終クラスであり、継承できません。

  5. StringBuffer は変更可能なオブジェクトであり、String のように再確立されることはありません。コンストラクターを通じてのみ確立できます。オブジェクトの作成後、メモリ領域が割り当てられ、最初に null が保存されます。 StringBuffer に値を割り当てるときは、その append メソッドを使用できます。 obj.append("hello");

  6. StringBuffer は、文字列接続操作において String よりも効率的です。

  7. プログラムで頻繁に変更や文字列の接続操作が必要な場合は、StringBuffer を使用した方がパフォーマンスが高くなります。

  8. String クラスには、既存の文字列内の特定の文字を変更するメソッドはありません。Java 文字列内の 1 文字を変更することはできないため、JDK では次のように記述されています。 String クラスのオブジェクトは不変であること。

  9. ただし、不変文字列には大きな利点があります。それは、コンパイラが文字列を共有できることです。

  10. StringBuffer はスレッドセーフであり、マルチスレッド プログラムで簡単に使用できますが、プログラムの実行効率は比較的遅くなります。

  11. StringBuffer クラスのメソッドは、追加、挿入、削除などの文字列の変更に重点を置いています。これが StringBuffer クラスと String クラスの主な違いでもあります。

String と StringBuffer 接続文字列の比較

  1. String str = new String("Hello World");str = "hello world";この文字列接続の処理プロセス:

    (1) StringBuffer を作成します。
    (2) append() メソッドを呼び出します。
    (3) 最後に、StringBuffer は toString() を呼び出して、 String の値 ##(4) この観点から見ると、String の接続操作は StringBuffer よりも多くの操作が必要となり、効率が悪くなります。
    (5) また、String は immutable オブジェクトであるため、代入されるたびに新しいオブジェクトが作成されるため、元のオブジェクトは役に立たずにガベージコレクションされてしまい、パフォーマンスにも影響します。

  2. #StringBuffer クラスは、指定された長さのメモリ ブロックを事前に割り当てて文字列バッファを作成できる補助クラスです。このように、StringBuffer クラスの append メソッドを使用して文字を追加することは、String の " " 演算子を使用して既存の文字列の後ろに文字を追加するよりもはるかに効率的です。

  3. " " 演算子を使用します。文字列に文字を追加するたびに、文字列オブジェクトは、より大きな文字列を収容するための新しいメモリ領域を見つける必要があります。これは間違いなく非常に手間がかかります。 -消費操作。複数の文字を追加するということは、文字列用のメモリを何度も再割り当てすることを意味します。 StringBuffer を使用すると、この問題が回避されます。

以上がJavaのStringとStringBufferの違いは何ですか? (差分比較)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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