If there has to be done lots of string manipulations, using String class would be a waste of memory since String class is immutable there would be lots of abandoned string objects in the string pool when manipulations are being done.
StringBuffer and StringBuilder Classes would handle such manipulations with efficient use of memory because these classes are not immutable and can reuse the same memory over and over. A common use of these classes is IO operations.
StringBuilder was added in Java 5. It has the same methods as the StringBuffer has but its methods are not synchronized and so it is not thread safe. So it runs faster than StringBuffer.