下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

String 和 StringBuffer,StringBuilder 的区别

作者:课课家教育     来源: http://www.kokojia.com点击数:1804发布时间: 2021-02-07 22:10:41

标签: java面向javajava培训

Web开发
  1. StringBuffer 与 StringBuilder,是 “字符串变量”, 是可以改变的对象, 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次修改,且不产生新的未使用的对象。

    StringBuilder 和 StringBuffer 之间的最大不同在于 StringBuilder 是线程不安全的。

    StringBuffer多线程安全,但是加了synchronized,其效率低。故适用于多线程下,并发量不是很高的场景

    String 是 “ 字符串常量” , 对象一旦创建就不可改变,这就导致如果字符串常量池中没有所需对象,每次对String对象的操作都会创建一个新的String对象,这样不仅效率低下,而且还会浪费大量有限的内存空间。

    StringBuilder 比 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

    使用场景

    如果只是操作少量的数据推荐使用 String,

    StringBuilder没有加任何锁,其效率高,适用单线程场景,但同时也适用于高并发场景中,提高高并发场景下程序的响应性能。

    至于线程安全问题可以通过其它手段解决,如ThreadLocal,CAS操作等。 所以对于高并发场景下,若有用到二者,还是建议优先使用StringBuilder

赞(13)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程