Java StringBuilder
Javaの文字列操作
Java1.4以前は、String同士の文字列結合は、PGレビュー時に叩かれる筆頭でした。
「StringBufferを使え」と。
Java5では、StringBuilderが追加されました。
それから、PGレビュー時には、こういう風に言うようになりました。
「スレッドセーフの考慮が不要なら、StringBuilderを使え」と。
自分もPGレビューされる側からする側になったんだなあとか思いながら…。
もちろん、今でもPGレビューされる側でもあります。
StringBuffer vs StringBuilder
スレッドセーフ vs パフォーマンス
StringBuilder クラスは Java5(Tiger)で導入されたクラス。
機能は StringBuffer クラスとまったく同じ。
StringBuffer クラスのすべてのメソッドは synchronized になっており、同期化されている。
このため、複数のスレッドから使用される場合でも、安全に使用することができる。
StringBuilder クラスはStringBuffer クラスからsynchronized がはずされただけ。
複数のスレッドから文字列操作を行うのであれば StringBuffer クラス。
単一スレッドであれば StringBuilder クラスという使い分けをおこなうようにすれば OK です。
append(String str) メソッドは、J2SE 1.4.2 の StringBuffer#append(String str) メソッドの
null の時の処理など少しだけ違う。
【参考サイト】
J2SE 5.0 Tiger 虎の穴 StringBuilder
http://www.javainthebox.net/laboratory/J2SE1.5/TinyTips/StringBuilder/StringBuilder.html