The usual advice is to use StringBuffer when you are going to mutate the String. The reason is well known – String is immutable and its costlier to create new objects than appending using StringBuffer. But StringBuffer is thread-safe, meaning every append or toString method call will acquire a lock on the StringBuffer object. There is an alternative to this well – StringBuilder!!
It was introduced in java 1.5 and its not synchronized which could help you get a little more out of your code esp when you are using a method or local scope variable.