String: 不可变的字符序列,底层使用char[]存储。
StringBuffer:可变的字符序列,JDK1.0的时候就有了,效率低,线程安全,底层是继承自 AbstractStringBuffer的char[],和String一样,但是没有final修饰,是可变 的。
StringBuilder:可变的字符序列,JDK1.5新增的,效率高,线程不安全,底层是继承自 AbstractStringBuffer的char[],和String一样,但是没有final修饰,是可变 的。
这三个底层都是char[]存储,但是后两个是可变的,长度不是固定的。
如果在开发当中拼接十分频繁,不要使用String,优先使用StringBuffer和StringBuilder
2.为什么不建议在for循环中用"+"进行字符串的拼接?在for中用 '+' 进行字符串的连接,每一次循环都呢new了一个对象,会造成大量的内存资源浪费。
一般循环体内字符串连接推荐使用StringBuilder的append方法进行扩展



