In Java String objects are immutable. In order to avoid junk string literals in the pool we are using StringBuffer and StringBuilder. These are mutable objects.The only difference between StringBuffer and StringBuilder is that StringBuilder is unsynchronized whereas StringBuffer is synchronized. So when the application needs to be run only in a single thread then it is better to use StringBuilder. StringBuilder is more efficient than StringBuffer.
Criteria to choose among String, StringBuffer and StringBuilder
- If your text is not going to change use a string Class because a String object is immutable.
- If your text can changes, and will be accessed from multiple threads, use a StringBuffer because StringBuffer is synchronous.
- If your text can change and will only be accessed from a single thread, use a StringBuilder because StringBuilder is not synchronized. This is faster than StringBuffer.