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