What is the difference between StringBuffer and String class?
A StringBuffer implements a mutable sequence of characters. A StringBuffer is like a String, but can be modified. At any point in time it contains some particular sequence of characters, but the length and content of the sequence can be changed through certain method calls.
The String class represents character strings. All string literals in Java programs, such as “abc” are constant and implemented as instances of this class; their values cannot be changed after they are created.
Strings in Java are known to be immutable.
What it means is that every time you need to make a change to a String variable, behind the scene, a “new” String is actually being created by the JVM. For an example: if you change your String variable 2 times, then you end up with 3 Strings: one current and 2 that are ready for garbage collection. The garbage collection cycle is quite unpredictable and these additional unwanted Strings will take up memory until that cycle occurs. For better performance, use StringBuffers for string-type data that will be reused or changed frequently.
There is more overhead per class than using String, but you will end up with less overall classes and consequently consume less memory.