前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Java中字符串相关的类:String、StringBuffer和StringBuilder

Java中字符串相关的类:String、StringBuffer和StringBuilder

作者头像
訾博ZiBo
发布2025-01-06 17:17:34
发布2025-01-06 17:17:34
600
举报

一、Java中字符串相关的类:String、StringBuffer和StringBuilder

1、可变性

String类使用final关键字修饰,使用字符数组(private final char value[])来保存字符串,所以String对象是不可变的

补充:在Java9之后,String类的实现改用byte数组(private final byte[] value)存储字符串;

注意:如果多次使用类似ss+="b"这样的操作,最好使用StringBuffer或者StringBuilder;

StringBuffer和StringBuilder都继承自AbstractStringBuilder类,在AbstractStringBuilder类中也是使用字符数组(char[] value)来保存字符串,但没有使用final关键字修饰,所以它们的对象是可变的

补充:StringBuffer和StringBuilder的构造方法都是调用父类AbstractStringBuilder类的构造方法;

2、线程安全性

String类的对象是不可变的,也可以理解为常量,线程安全

StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以线程安全

StringBuilder并没有对方法加同步锁,所以线程不安全

3、性能

String类每次进行改变的时候,都会产生一个新对象,然后指向新的对象,而StringBuffer和StringBuilder是对对象本身进行操作,而且使用StringBuilder相比使用StringBuffer仅仅提高10%~15%的效率,但缺要冒多线程不安全的风险;

4、总结

操作少量数据,适用String

单线程操作字符串缓冲区下操作大量数据,适用StringBuilder

多线程操作字符串缓冲区下操作大量数据,适用StringBuffer

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Java中字符串相关的类:String、StringBuffer和StringBuilder
    • 1、可变性
    • 2、线程安全性
    • 3、性能
    • 4、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档