Java中StringBuffer和StringBuilder的区别

StringBuilderStringBuffer这两者都是可变的字符序列

参考文档
Java中StringBuffer和StringBuilder的区别
Java中StringBuffer和StringBuilder的区别
尽管如此。做题的时候,还是搞不清使用场景是什么,害
我们先来看源码:

  • StringBuilder
    Java中StringBuffer和StringBuilder的区别
  • StringBuffer
    Java中StringBuffer和StringBuilder的区别

我们看上面的源码,都会发现它继承了一个抽象类AbstractStringBuilder
Java中StringBuffer和StringBuilder的区别

  • 1、线程安全的角度
    StringBuffer:线程安全
    StringBuffer:线程安全:线程不安全
    为什么这么说呢,同样我们查看源码,StringBuffer类里面的方法都使用 synchronized关键字进行修饰,(关于 synchronized具体作用,参考以下链接(https://blog.****.net/qq_44723296/article/details/105412662)
    Java中StringBuffer和StringBuilder的区别

  • 2、效率
    我们知道StringBuffer是线程安全的,那么它的方法都是同步的,相对于StringBuilder这个类来说,加锁和没加锁相比,效率要低一点。

    单线程情况下,我们使用StringBuilder
    多线程情况下,我们使用StringBuffer