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以获得更好的性能。