- 不可修改的字符串 :
String
变量不可修改。 - 可修改的字符串 :
StringBuffer
和StringBuilder
可修改。 - 线程安全性 :
StringBuffer
是线程安全的,StringBuilder
不是。
内存使用 : StringBuffer
使用共享缓存区,调用 toString
方法时不创建新数组;StringBuilder
每次调用 toString
时都会生成新数组。
- 性能 : 由于同步锁,
StringBuffer
性能较差,单线程环境下推荐使用StringBuilder
。 - 字符串拼接性能 : 使用
String
进行字符串相加效率低于StringBuffer
和StringBuilder
,因为String
拼接背后调用了StringBuilder
的append
和toString
,增加了不必要的对象创建和数组拷贝。