StringBufferとStringBuilderの違い
StringBuilderとStringBufferの違い
この3つの方法では、文字列を貼り付けるときにパフォーマンスの違いが発生します.
Stringクラスは、
+
を使用して文字列貼り付け演算を行います.ただし、Stringの
+
演算では、最初のオブジェクトが作成され、メモリ割り当て後にオブジェクトが作成されます.演算の結果、メモリが割り当てられました.
例えば、
String a = "여기는" + "현지의 개발블로그";
前述したように、メモリは、それぞれ여기는
および현지의 개발블로그
に割り当てられる.2つの文字列が付いた
여기는 현지의 개발블로그
文字列にもメモリが割り当てられます.これはString Classの
immutable(불변)
の特性のためです.一度に生成されるオブジェクトのメモリは変わらないので、メモリは別々に割り当てられます.
したがって、StringBuilderやStringBufferには及ばない.
StringBuilderとStringBufferは
mutable(가변)
の性質を持つため、初期割り当てのメモリが変化する可能性があります.従ってStringよりも性能が良い.
では、StringBuilderとStringBufferの違いを見てみましょう.
両者の違いはスレッドです.異なるのは、単一スレッドに適しているか、マルチスレッドに適しているかです.
単一スレッドとマルチスレッドとは? たとえば、単一のスレッドが1つのスレッドである2つのタスクがあるとします。 二つの仕事を処理する。一つの仕事を終えて、別の仕事を始める。 マルチスレッドは、2つのスレッドによって2つのタスクを順番に処理します。 この場合、マルチスレッドは2つのタスクを交互に処理し、切り替えに時間がかかります。 したがって、単一スレッドとマルチスレッドの速度差は多くないか、マルチスレッドの速度はかえって遅い。
StringBufferは同期をサポートし、マルチスレッド環境で使用しやすい.
StringBuilderでは同期はサポートされておらず、シングルスレッド環境での使用が容易です.
JDK 1.5以降は、Stringオブジェクトを使用してもStringBuilderにコンパイルされます.
しかしStringには
immutable
という特徴がありますので、StringBufferやStrinbBuilderを使ったほうがいいです.StringBufferオブジェクトとStringBuilderオブジェクトを作成して文字列を貼り付ける場合は、
append
メソッドを使用します.例:
StringBuilder sb = new StringBuilder("여기는");
String s = "개발블로그";
sb.append(s);
前述したように、オブジェクトを宣言し、appendメソッドを使用して文字列を貼り付けることができます.高密度シングルスレッドStringBuilderの計算
演算量が多く、マルチスレッドの場合はStringBufferを使用するとパフォーマンスが向上します.
参考資料
Reference
この問題について(StringBufferとStringBuilderの違い), 我々は、より多くの情報をここで見つけました https://velog.io/@hyun-jii/StringBuffer와-StringBuilder의-차이점テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol