javaで文字列を操作するためのクラスは何ですか?それらの違いは何ですか?

  Java で一般的に使用される文字列操作クラスは次のとおりです。

  1.文字列クラス

  String クラスは、Java で最も一般的に使用される文字列クラスであり、不変の文字列です。つまり、作成後に変更することはできません。

  2.StringBuilder クラス

  StringBuilder クラスも文字列操作クラスですが、変数です。つまり、作成された文字列オブジェクトを変更できます。StringBuilder は、String よりもプログラムでの文字列連結に適しています。

  3.StringBuffer クラス

  StringBuffer クラスは StringBuilder クラスに似ており、可変文字列操作クラスでもありますが、スレッドセーフ、つまり複数のスレッドが同じ StringBuffer オブジェクトに同時にアクセスできるため、StringBuffer を使用する方が安全です。マルチスレッド環境での StringBuilder よりも。

  3 つのクラスの主な違いは、可変性、スレッド セーフ、およびパフォーマンスです。文字列は不変であるため、文字列の連結などの操作が実行されると、操作ごとに新しい文字列オブジェクトが作成され、より多くのメモリ スペースと時間が消費されます。ただし、StringBuilder と StringBuffer は変数であり、既存の文字列オブジェクトを直接変更できるため、より効率的です。StringBuilder は StringBuffer より高速ですが、スレッドセーフではないため、マルチスレッド環境では StringBuffer を使用する必要があります。

  一般に、単純な文字列操作のみを行う場合は String クラスを使用できます.文字列の連結などの操作を頻繁に行う必要がある場合は、StringBuilder を使用することをお勧めします.マルチスレッド環境で使用する場合は、StringBuilder を使用することをお勧めします. StringBuffer を使用します。

  次に、コードを使用して説明します。

public class StringDemo {
    public static void main(String[] args) {
        String str1 = "hello";
        String str2 = "world";
        String str3 = str1 + str2; // 会创建一个新的对象
        System.out.println(str3);

        StringBuilder sb1 = new StringBuilder("hello");
        sb1.append("world"); // 不会创建新的对象
        System.out.println(sb1.toString());

        StringBuffer sb2 = new StringBuffer("hello");
        sb2.append("world"); // 不会创建新的对象
        System.out.println(sb2.toString());
    }
}

  出力は次のとおりです。

helloworld
helloworld
helloworld

  文字列スプライシングに String クラスを使用すると新しいオブジェクトが作成されますが、StringBuilder クラスと StringBuffer クラスを使用しても新しいオブジェクトは作成されないことがわかります。

おすすめ

転載: blog.csdn.net/Blue92120/article/details/130280135
おすすめ