Edited at

【Java】StringBufferとStringBuilderの違い

More than 1 year has passed since last update.


教科書的な解説


StringBuffer

可変の文字列を扱う。

Stringクラスは、文字列を変更するたびに新しいオブジェクトを生成するが、StringBufferは、生成されたオブジェクトに文字列を追加していく。

つまり、生成されるオブジェクトは1つだけになる。


StringBuilder

可変の文字列を扱う。

JDK1.5でリリースされたクラスで、StringBufferと同じメソッドを持っているし、使い方もStringBufferと同じ。

StringBufferとの違いは「スレッドセーフではない(同期化しない)」こと。

同期化しないので、処理が早い


どっちを使えばいい?


新人研修の場合

研修の課題で処理速度が求められることはまずないので、どっちを使ってもいいと思う。

意味が分からなくてもいいから、違いを聞かれた時にパッと答えられれば(新人:beginner:なので)それでいい・・・と私は思ってる。

どちらかというと、StringBuffer/StringBuilderが使えるようになってほしい:star:


業務での場合

既存プログラムの改修であれば、すでに多用されている方を使った方がいい。

お作法的にNGだったとしても、その後のメンテナンス性を考慮すると、あえて既存を踏襲した方が良いことの方が多いので。

1から新規で作るなら、(個人的には)速度性を重視してStringBuilderを使う。