Java中StringBuffer和StringBuilder的区别
StringBuilder
和StringBuffer
这两者都是可变的字符序列
参考文档
尽管如此。做题的时候,还是搞不清使用场景是什么,害
我们先来看源码:
-
StringBuilder
类 -
StringBuffer
类
我们看上面的源码,都会发现它继承了一个抽象类AbstractStringBuilder
-
1、线程安全的角度:
StringBuffer
:线程安全StringBuffer
:线程安全:线程不安全
为什么这么说呢,同样我们查看源码,StringBuffer
类里面的方法都使用synchronized
关键字进行修饰,(关于 synchronized具体作用,参考以下链接(https://blog.****.net/qq_44723296/article/details/105412662)) -
2、效率
我们知道StringBuffer
是线程安全的,那么它的方法都是同步的,相对于StringBuilder
这个类来说,加锁和没加锁相比,效率要低一点。单线程情况下,我们使用
StringBuilder
多线程情况下,我们使用StringBuffer