StringBufferとStringBuilderの違い


StringBuilderとStringBufferの違い

  • は、まずString、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メソッドを使用して文字列を貼り付けることができます.
  • は、文字列貼り付け演算が少ない場合はStringクラスを使用することが望ましいと結論した.
    高密度シングルスレッドStringBuilderの計算
    演算量が多く、マルチスレッドの場合はStringBufferを使用するとパフォーマンスが向上します.
  • 参考資料

  • ( https://12bme.tistory.com )
  • ( https://cjh5414.github.io )