Java中的StringBuffer和StringBuilder区别是什么?

StringBuffer和StringBuilder都是可变的字符序列,主要区别为:

1. 线程安全性不同

StringBuffer是线程安全的,StringBuilder是非线程安全的。

## www.itzhimei.com 代码块
StringBuffer sb = new StringBuffer(); // 线程安全
StringBuilder sb = new StringBuilder(); // 非线程安全

2. 性能不同

StringBuilder的性能较好,因为它没有线程安全带来的同步开销。

3. 历史原因

StringBuffer存在了很久,从早期Java版本就有。StringBuilder后来在Java 5中加入。

4. 方法基本相同

它们的方法基本一致,如append(), insert(), delete()等。

## www.itzhimei.com 代码块
sb.append("abc"); // 添加字符串
sb.delete(0, 2); // 删除部分内容 

总结:

StringBuilder适用于单线程,StringBuffer适用于多线程。在不需要线程安全的场景中,优先使用StringBuilder以获得更好的性能。