String is a non-primitive immutable data type that represents a sequence of characters. It is stored in the String Constant Pool in heap memory. Methods like equals(), length(), concat() etc are used to manipulate String objects. StringBuffer and StringBuilder are mutable alternatives to String that allow modifications. The key differences are that StringBuffer is thread-safe while StringBuilder is not, and StringBuilder provides better performance than StringBuffer in single threaded cases.