String are immutable where as StringBuffer and StringBuilder are mutable.
StringBuffer is thread safe and syncronized whereas StringBuilder is not, thats why StringBuilder is faster as compared to StringBuffer.
String overrides equals() and hashCode() methods as the base class of String is Object.
For String manipulations in non-multi threaded environment, we should use StringBuilder else use StringBuffer class.