差(RPM)文字列のStringBufferとのStringBuilderの

            String 字符串常量(线程安全)StringBuffer 字符串变量(线程安全)StingBuilder字符串变量(非线程安全)
    简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。
    而如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在一般情况下我们推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下。而在某些特别情况下, String 对象的字符串拼接其实是被 JVM 解释成了 StringBuffer 对象的拼接,所以这些时候 String 对象的速度并不会比 StringBuffer 对象慢,而特别是以下的字符串对象生成中, String 效率是远要比 StringBuffer 快的:
 String S1 = “This is only a” + “ simple” + “ test”;
 StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”);
 在这种情况下,生成 String S1 对象的速度会更快,而这个时候 StringBuffer 居然速度上根本一点都不占优势。其实这是 JVM 的一个把戏,在 JVM 眼里,这个

ストリングS1 = +「単純な」+「テスト」「これが唯一です」。其实就是:文字列S1 =「これは単純なテストです」;

もちろん、それは多くの時間を必要としません。しかし、ここで注意することは、あなたが別の文字列Stringオブジェクトからであれば、そのスピードのような、非常に高速ではないということです。

String S2 = “This is only a”;
String S3 = “ simple”;
String S4 = “ test”;
String S1 = S2 +S3 + S4;
这时候 JVM 会规规矩矩的按照原来的方式去做,因此,在大部分情况下 **StringBuffer > String**

StringBufferの

文字のJava.lang.StringBufferスレッドセーフな可変のシーケンス。文字列は、文字列バッファに似ていますが、変更することはできません。文字の特定の配列を含むが、特定の方法によって変化させることができる任意の時点は、シーケンスの長さと内容を呼び出しています。
文字列バッファは、安全に複数のスレッドで使用することができます。これらの方法は、同期している場合には、任意の特定の例のすべての操作が発生した場合にシリアル順序で、および方法を順次に順次一致各スレッドに向け呼び出すように必要であるかもしれません。
インサートと追記の主な動作は、任意のタイプのデータを受信するためにこれらのメソッドをオーバーライドすることができ、StringBufferの方法です。各方法は、文字列に与えられたデータに有効であることができ、その後、文字列を追加または文字列バッファに挿入されます。appendメソッドは常に、バッファの末尾にこれらの文字を追加します。Insertメソッドは、指定されたポイントにある文字を追加することです。
現在のコンテンツが基準Zである場合、例えば、文字列バッファオブジェクトを「開始」、このメソッド呼び出しはz.append(「レ」)が含まれている文字列バッファ意志「驚愕」、及びz.insert(4 「ル」)は、「スターレット」を含むように文字列バッファを変更します。
そのため、ほとんどの場合のStringBuilder> StringBufferの

StringBuilder

java.lang.StringBuilderは文字の可変配列は、新しい5.0です。このクラスは、APIと互換性のStringBufferを提供していますが、同期を保証するものではありません。クラスは、ドロップイン置換のStringBuffer、(一般的である)単一のスレッドを使用する場合に使用されるバッファの文字列として設計されています。可能ならばほとんどの実装では、それは速いのStringBufferよりなので、私たちは、そのような優先順位を使用することをお勧めします。両方の方法は、実質的に同じです。
一般的に言えば;
A:文字列の内容は不変である、とのStringBuffer、StringBuilderの内容は可変です。
B:StringBufferの、データのセキュリティを同期され、低効率、のStringBuilderが同期していない、データが安全で、高効率

おすすめ

転載: www.cnblogs.com/blackmlik/p/12076194.html