スピード、執行のスピード:StringBuilderの>のStringBuffer>文字列
1.Stringは、不変オブジェクトである文字列定数の文字列:
たびは、オブジェクトが、システムのパフォーマンスに生成されますので、新しいStringオブジェクトを生成するために、String型のファクト同等の変更のための時間は、その後、新しいStringオブジェクトへのポインタなので、多くの場合、文字列の内容を変更するには、文字列を使用しないように最善の方法ですメモリは、参照オブジェクトの後に、それ以上である場合は特に、影響を与えない、JVM GCは、その速度は確かに非常に遅く、作業を開始します。
2. StringBufferの可変オブジェクトのStringBufferの文字列変数(最終的な)アレイは、一度だけ割り当てられることができます。
StringBufferクラスは、結果は同じではない、それぞれの時間は結果ではなく、新しいオブジェクトを生成する、StringBufferオブジェクト自体に動作し、その後、オブジェクト参照を変更します。
StringBufferのは、synchronizedキーワードと多くの点で、あなたは、スレッドセーフを保証することができます。
3. のStringBuilderの文字列変数、通常の配列
StringBuilderのアプローチはキーではない、それは間違った操作が発生した何かがあるかもしれません、スレッドセーフを保証することはできません。
StringBufferをとStringBuilderの変数の操作は、直接目的の変更、で作成およびリカバリ操作なしなし新品未使用オブジェクト、そのスピードは文字列よりもはるかに高速です。
だから、実行する操作がマルチスレッドされている場合、我々はStringBufferのを使用する必要がありますが、シングルスレッドの場合には、速いのStringBuilderを使用することをお勧めします
文字列:文字列の操作の少量を適用します
StringBuilder:文字バッファ内の単一のスレッドの下で動作し、多数の状況に適用されます
文字バッファの下で動作するマルチスレッドに適した症例の大多数:たStringBuffer
オリジナル接続します。https://www.cnblogs.com/su-feng/p/6659064.html