Java stringbuilder StringBuffer String

1177 ワード

stringbuilderの原理
JavaにはString Stringbuilder Stringbufferがありますが、stringbuilderで最も速く動作する
速度Stringbuilder>Stringbuffer>String、
しかしStringBuffer synchronizedキーワードは修飾されているので、時スレッドは安全ですが、Stringbuilderの場合は安全ではありませんが、Stringbuilderはロックがかかっているかどうか判断していないため、単一スレッドが最も効率的ですが、Stringは厳密な意味では定数です.変更できないので、前の2つとは大きな違いがあります.StringBuilderとStringBufferはオブジェクトが可変であるため、両方ともAbstractStringBuilderクラスを継承します.StringbuilderとStringbufferの方法は基本的に同じですが、Stringbufferにロックがかかっているだけで、Stringbuilderなので、彼は一番速いです.
String str = "a";
		str = "b";

この文を実行するときにターゲットはstrが変更されたのではなく、再参照されたが、前の「a」は放棄されたため、回収され、再参照される必要があるため、Stringは速度が最も遅い
三者のequals法
JavaではStringだけがequalsメソッドを書き換えています.ある人は、2つの文字列の比較が等しいかどうかはStringだけがequals比較を利用することができますが、StringBufferとStringBuilderは書き換えていないので、Objectクラスのequalsメソッドを継承しているだけです.以下はObjectのequalsに関するソースコードです.
public boolean equals(Object obj) {
        return (this == obj);
    }

単純に「===」を用いて判断するだけであるため,2つのStringBufferまたは2つのStringBuilder文字列が等しいか否かを判断する必要がある場合,equalsは利用できないことが分かる.
しかしこの時我々はStringBufferあるいはStringBuilderのtoString()法を利用して,彼らをStringに置き換えてequalsを利用して等しいかどうかを比較することができる.