区别:
String:每一次创建和修改都需要在堆内存中开辟空间。且对String类型进行修改时,等同于在堆内存中新建了一个String对象,并改变引用变量使其指向新的String对象。
StringBuffer:和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
小结:
(1)如果要操作少量的数据用 String;
(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;
(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。
参照:https://blog.youkuaiyun.com/itchuxuezhe_yang/article/details/89966303