long story short,
stringbuffer is a synchronized class implementation and stringbuilder is not
both of them behave same but StringBuffer provide thread safety, but just for it's methods, which result in a small performance hit , which doesn't matter for small App but is fairly considerable where lots of objects are involved so it's better to use stringbuilder because it is fast, if you are dying for the thread safety feature(as -if you're using threads ) then stringbuffer provides some additional thread safety,
StringBuilder is new and is faster then StringBuffer, that's the reason
you should prefer it.
consider
this article which shows almost 34% difference in terms of performance.
[ December 10, 2008: Message edited by: vaibhav mishra ]
[ December 10, 2008: Message edited by: Campbell Ritchie ]