这三个类的主要区别在两个方面:运算速度(运算性能或执行效率)和线程安全性。
1、运算速度比较(通常情况下):StringBuilder > StringBuffer > String
String 是 final 类不能被继承且为字符串常量,而 StringBuilder 和 StringBuffer 均为字符串变量。String 对象一旦创建便不可更改,而后两者是可更改的,它们只能通过构造函数来建立对象,且对象被建立以后将在内存中分配内存空间,并初始保存一个 null,通过 append 方法向 StringBuffer 和 StringBuilder 中赋值。请看如下示例代码:
String str = "abc";
System.out.println(str);
str = str + "de"