教科書的な解説
StringBuffer
可変の文字列を扱う。
Stringクラスは、文字列を変更するたびに新しいオブジェクトを生成するが、StringBufferは、生成されたオブジェクトに文字列を追加していく。
つまり、生成されるオブジェクトは1つだけになる。
StringBuilder
可変の文字列を扱う。
JDK1.5でリリースされたクラスで、StringBufferと同じメソッドを持っているし、使い方もStringBufferと同じ。
StringBufferとの違いは「スレッドセーフではない(同期化しない)」こと。
同期化しないので、処理が早い。
どっちを使えばいい?
新人研修の場合
研修の課題で処理速度が求められることはまずないので、どっちを使ってもいいと思う。
意味が分からなくてもいいから、違いを聞かれた時にパッと答えられれば(新人なので)それでいい・・・と私は思ってる。
どちらかというと、StringBuffer/StringBuilderが使えるようになってほしい
業務での場合
既存プログラムの改修であれば、すでに多用されている方を使った方がいい。
お作法的にNGだったとしても、その後のメンテナンス性を考慮すると、あえて既存を踏襲した方が良いことの方が多いので。
1から新規で作るなら、(個人的には)速度性を重視してStringBuilderを使う。