ホームページ  >  記事  >  Java  >  String、StringBuffer、StringBuilder の違いについての簡単な説明

String、StringBuffer、StringBuilder の違いについての簡単な説明

青灯夜游
青灯夜游転載
2019-11-27 17:15:541779ブラウズ

Java 開発の面接では、String、StringBuider、StringBuffer の違いについてよく質問されますが、包括的かつ十分に詳しく答えていない人が多いのですが、これらの違いは何でしょうか?

String、StringBuffer、StringBuilder の違いについての簡単な説明

3 つはすべて文字列の操作に使用されます。通常、String は変数の定義に使用され、StringBuilder StringBuffer は通常、文字列の結合やその他の操作に使用されます。しかし実際には、String は文字列を結合するためにも使用できますが、なぜめったに使用されないのでしょうか? まずは 3 つの基礎となるコードから始めましょう。

String、StringBuffer、StringBuilder の違いについての簡単な説明

#String の基礎となるコードは、final で変更された char 配列です。これは、String 変数を定義した後、変数の内容が不変であることを意味します。

String、StringBuffer、StringBuilder の違いについての簡単な説明

String、StringBuffer、StringBuilder の違いについての簡単な説明

String、StringBuffer、StringBuilder の違いについての簡単な説明

#StringBuilder と StringBuffer はどちらも AbstractStringBuilder から継承しており、このクラスの char 配列は継承しません。最終的な変更を使用します。内容は可変です。これは何を意味しますか?

例:

String s1= "a";
String s2 = new String("b") ;
String s3 = s1+s2;

その場合、文字列「ab」が得られます。これは、文字列の最後に不変の文字列がないため、3 つのオブジェクトが作成され、それらはすべてメモリを占有しており、この 3 つのオブジェクトは参照を失ったことがないため、jvm はガベージ コレクションできず、メモリ リソースが大量に浪費されます。これは開発では推奨されませんが、StringBuilder と StringBuffer にはそのような問題はありません。

String、StringBuffer、StringBuilder の違いについての簡単な説明

String、StringBuffer、StringBuilder の違いについての簡単な説明

String、StringBuffer、StringBuilder の違いについての簡単な説明

基盤となるコードを通して、StringBuilder と StringBuffer が長さかどうかを決定していることがわかります。文字列の結合で十分であり、データをカプセル化する新しい配列を作成しますが、元のオブジェクトは参照を放棄してガベージ コレクションを待機するため、メモリの無駄が削減されます。そのため、文字列の結合やその他の操作では、通常、StringBuilder と StringBuffer を使用します。とありますが、両者の実行効率は異なり、StringBuilderの方が実行効率が高いのですが、これはなぜでしょうか?

String、StringBuffer、StringBuilder の違いについての簡単な説明

String、StringBuffer、StringBuilder の違いについての簡単な説明

基盤となるソース コードを見ると、StringBuffer は文字列を結合するときに同期ロックを使用するため、セキュリティが向上しますが、StringBuilder では同期ロックが使用されないことがわかります。同期ロックがかかるので効率が上がります。

ここで、これら 3 つの違いを理解する必要があります。 !

この記事は

Java 入門 列からのものです。ぜひ学習してください。

以上がString、StringBuffer、StringBuilder の違いについての簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は源码时代で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。