String
- String类是一个不可变类, 创建String对象后, 该对象中的字符串是不可改变的
- 由于是不可改变的, 所以当一个字符串经常被修改时, 最好使用StringBuffer或者StringBuilder实现
StringBuffer
- StringBuffer类型的字符串是可变的
- 线程安全, 因为StringBuffer中的方法大都采用了synchronized关键字进行修饰
- 在单线程中, StringBuffer每次需要判断锁, 所以效率相对较低
- 多线程环境下涉及到共享变量的插入和删除操作, 首选StringBuffer
StringBuilder
- StringBuilder类型的字符串是可变的
- 线程不安全
- 在单线程中, StringBuilder相较于StringBuffer效率更快
- 非多线程操作并且有大量的字符串拼接, 插入, 删除操作, 首选StringBuilder
执行速度: StringBuilder > StringBuffer > String
在频繁进行字符串运算(如删除, 替换, 拼接等), 可以使用StringBuilder或者StringBuffer