String:是典型的不可变类,被声明成final class,所有属性也都是final的。每次对String的操作都会生成新的String对象。这样不仅效率低下,而且大量浪费有限的内存空间。在Java中提供了 String 类来创建和操作字符串
StringBuffer:是为了解决每次对String的操作都会生成新的String对象,是Java 1.5中新增的。StringBuffer本质是一个线程安全的可修改字符序列,它保证了线程安全,也随之带来了额外的性能开销
StringBuilder:在能力上和StringBuffer没有本质区别,但是它去掉了线程安全的部分,有效减小了开销,是绝大部分情况下进行字符串拼接的首选
String:字符串常量,不可变字符序列
StringBuffer:字符串变量,线程安全,可变字符序列,执行效率低
StringBuilder:字符串变量,非线程安全,不能同步访问,可变字符序列,执行效率高
StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象