StringBuilder と StringBuffer の違いを知りたいです。StringBuffer では、自動的に 16 文字を割り当てます。文字列「hello」を追加すると、容量が 21 に増えます。
3 に答える
Javadocs を見ましたか?
http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.htmlから:
このクラスは、StringBuffer と互換性のある API を提供しますが、同期は保証されません。このクラスは、文字列バッファーが単一のスレッドによって使用されていた場所 (一般的なケース) で、StringBuffer のドロップイン置換として使用するように設計されています。可能であれば、このクラスを StringBuffer よりも優先して使用することをお勧めします。これは、ほとんどの実装でより高速になるためです。
主な違いは、StringBufferはスレッド セーフです (そのメソッドはすべて同期されます) が、StringBuilderはそうではありません。ただし、StringBuilder は StringBuffer よりも高速です。スレッドセーフが必要ない場合は、StringBuilder を使用してください。
StringBuffer はスレッドセーフです (つまり、そのメソッドは同期されます)。ただし、これはすべてのアプリケーションで必要とされるわけではなく、そうしない場合よりもコードが遅くなります。StringBuilder は本質的に同期のない StringBuffer であるため、少し高速です。