JavaのString、StringBuffer、およびStringBuilderは、プログラミングでよく使用される文字列クラスです。要約すると、それらの違いと同じことを見てください。
1。変数と変更されていません
文字列クラスは、「最終」モディファイアがあるため、文字列を保存するために文字列アレイを使用します。
プライベートファイナルチャーバリュー[];
StringBuilderとStringBufferは、AbstractStringBuilderで継承されます。
char [] value;
2。安全ですか?
文字列内のオブジェクトは不変であり、一定であると理解できます。明らかにスレッドは安全です。
AbstractStringBuilderは、StringBuilderとStringBufferの間のパブリック親クラスであり、拡張性、追加、挿入、インデックス、その他のパブリックメソッドなど、ある文字列の基本オペラントを定義します。
StringBufferは同期ロックを追加するか、コールメソッドがメソッドに追加されるため、スレッド-Safeです。次のソースコードを参照してください。
次のようにコードコードをコピーします。
public synchronized stringbuffer reverse(){{){
super.reverse();
これを返します。
}
public int indexof(string str){
return indexof(str、0);
}
StringBuilderにはメソッドに同期ロックがないため、スレッドセキュリティではありません。
3。StringBuilderとStringBufferの共通
StringBuilderとStringBufferには、パブリックの親クラス抽象ストリングビルダー(要約クラス)があります。
抽象クラスとインターフェイスの違いの1つは、いくつかのサブクラスの一部を抽象クラスで定義できますインターフェイスのメソッド。
StringBuilderとStringBufferの方法はすべて、Super.Appending(...)など、AbstractStringBuilderでパブリックメソッドを呼び出します。 StringBufferが同期したキーワードをメソッドに追加して同期するだけです。
最後に、プログラムがマルチスレッドされていない場合、StringBuilderを使用する効率はStringBufferよりも高くなります。