StringBuilder和StringBuffer的区别
对字符串的修改
String:不可变字符串
StringBuffer:可变字符串、效率低(速度慢)、但线程安全
StringBuilder:可变字符序列、效率高(速度快)、线程不安全(不能同步访问)
继承结构
源码分析
StringBuffer 的所有公开方法都是由synchronized修饰的,但是StringBuilder没有。(synchronized是Java中的关键字,是一种同步锁)
StringBuffer:
1 |
|
对于缓冲区:
StringBuffer:
1 | private transient char[] toStringCache; |
StringBuilder:
1 |
|
前者每次调用toString方法时都会直接使用缓冲区的toStringCache创建字符串,后者每次都复制一个字符串,并再创建一个字符串
性能上毫无疑问是StringBuilder更加效率高,StringBuilder或许更加适合在单线程操作字符串缓冲区下操作大量的数据。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Forest's blog!