String,StringBuffer和StringBuilder

String,StringBuffer和StringBuilder分别应该在什么情况下使用?
String 是Java的字符串类,其实质上也是用Char类型存储的,但是除了hash属性,其他的属性都声明为了final类型.

因为其这样操作产生的不变性,带来了如下优点:

  1. 因为经常利用String存储的数据去做hash运算,将其设置为final则可以使hash值不变.

  2. 牵扯到享元的基础, 如果不设置为final类型的话,享元机制就无法使用.

  3. String参数的不变性,天生带来线程安全, 可以在多个线程中安全的使用,而不用去加线程锁.


但是因为上述的方便只能牺牲一些东西,但是作为成年人一定要选择我都要,然后就产生了StringBuffer和StringBuilder.

StringBuffer和StringBuilder的产生使为了解决大量拼接字符串时产生很多中间对象的问题,而提供的个类.

但是为什么要有两个呢 ?

依然使线程问题,stringBuffer加了线程锁,在多线程的情况下可以安全使用,而只有单线程的情况下我们使用 StringBuilder,它没有线程锁所以性能更高.

转载于:https://www.cnblogs.com/A-FM/p/10928914.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值