Javaに基づくString、StringBuffer、StringBuilderの違いと使用法

まず、String、StringBuffer、およびStringBuilderの類似点について説明します。
これらの3つがするために使用されている文字列パッケージ
継承図3が継承されたインタフェースのCharSequenceキャッチ、フィギュアのショーを
次の3つの異なる話を!

違いの1つ:

Stringの値を作成から破棄に変更することはできません。
StringBufferとStringBuilderは、文字配列に格納されているAbstractStringBuilderクラスを継承しているため、可変です。
したがって、使用シナリオ:
頻繁に変更されない変更を保存するString、頻繁に変更される変更を保存するStringBufferおよびStringBuilder。Stringを使用して変数を格納すると、新しいオブジェクトが作成され、古いオブジェクトがリサイクルされるたびに、プログラムのパフォーマンスに影響を与えると想像してください。
文字列変更の方法は、最初にStringBufferを作成し、次にStringBufferのappendメソッドを呼び出し、最後にtoString()メソッドを呼び出して結果を返すことです。

代码:
String str = "王";
str += "胖子";

实际进行的操作:
StringBuffer sb = new StringBuffer(str);
sb.append("胖子");
str = sb.toString();

2番目の違い:

作成方法:

        // String 可以赋值或构造器
        String a="王小胖";
        String b=new String("王二胖");
        // StringBuffer 构造器
        StringBuffer c=new StringBuffer("王瘦瘦");
        // StringBuilder 构造器
        StringBuilder d=new StringBuilder("王小瘦");

3番目の違い:

equalsメソッドとhashCodeメソッド
Stringはequals()メソッドとhashCode()メソッドを実装しているため、new String( "java")。equals(new String( "java"))の結果はtrueです。

StringBufferはequals()メソッドとhashCode()メソッドを実装していません。したがって、new StringBuffer( "java")。equals(new StringBuffer( "java"))の結果はfalseであり、Javaコレクションクラスに格納されているStringBufferオブジェクトが表示されます。問題。

4つの異なるポイント:

使用されるシナリオ:
StringBufferとStringBuilderはどちらも文字列を変更する機能を備えており、使用法は似ていますが、次の点が異なります
。String:操作の数が少なく、
StringBuilderはシングルスレッド操作に対して安全ではなくStringBufferは
大量のデータのマルチスレッド操作に対してスレッドセーフです。

おすすめ

転載: blog.csdn.net/Pzzzz_wwy/article/details/105469792