What is the main difference between StringBuffer
and StringBuilder
?
Is there any performance issues when deciding on any one of these?
But needed to get the clear difference with the help of an example?
StringBuffer or StringBuilder
Simply use StringBuilder
unless you really are trying to share a buffer between threads. StringBuilder
is the unsynchronized (less overhead = more efficient) younger brother of the original synchronized StringBuffer
class.
StringBuffer
came first. Sun was concerned with correctness under all conditions, so they made it synchronized to make it thread-safe just in case.
StringBuilder
came later. Most of the uses of StringBuffer
were single-thread and unnecessarily paying the cost of the synchronization.
Since StringBuilder
is a drop-in replacement for StringBuffer
without the synchronization, there would not be differences between any examples.
If you are trying to share between threads, you can use StringBuffer
, but consider whether higher-level synchronization is necessary, e.g. perhaps instead of using StringBuffer, should you synchronize the methods that use the StringBuilder.