String、StringBuffer、StringBuilder 区别总结

线程安全来说: 

String(是final修饰类)和StringBuffer(StringBuffer的方法都是带有synchronized关键字)都安全, 而StringBuilder因为没有synchronized关键字所以不安全。

执行效率来说:

String最慢,StringBuffer次之,StringBuilder最快。因为,每当用String操作字符串时,实际上是在不断的创建新的对象,而原来的对象就会变为垃圾被GC回收掉

底层操作来说:

String 当将一个字符串常量赋给一个String对象时(例如String str1 = “dashu”),实际上是 “dashu” 这个常量是放在常量池里,String对象则是指向了"dashu"所在的地址。String 不存在扩容。字符串拼接,截取,都会生成一个新的对象
StringBuilder 内部维护可变长度char[] , 初始化数组容量为16,存在扩容
StringBuffer 类内部维护可变长度char[],基本上与StringBuilder一致,初始化数组容量16,也存在扩容,但其为线程安全的字符串操作类,大部分方法都采用了Synchronized关键字修改

小总结:

1.如果要操作少量的数据用 : String 因为它是线程安全的。又因为少量数据注定三者速度差别会很小。
2.单线程操作字符串缓冲区 下操作大量数据:本来也可以选String类的,但是String对于大量数据来说的话,会频繁创建对象和GC,速度会很慢。StringBuilder 是单线程不安全的,所以选StringBuilder
3.多线程操作字符串缓冲区 下操作大量数据:大数量,注定String不适合,因为它太慢,太耗资源,StringBuilder又线程不安全,所以也不适合,所以,选StringBuffer。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夢鑰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值