Sring、StringBuilder、StringBuffer的区别


)

先讲一下string

首先String是一个应用类型。String跟另外两个类比较的话,区别就是在使用"+"号的循环拼接速度慢。

为什么速度会更慢一点?

因为在jdk编译的时候,在循环中会先 new StringBuilder,然后再使用append方法拼接字符串。所以在循环的中拼接字符串就是创建一个StringBuilder对象进行一次字符拼接然后丢弃。

建议在平时写代码使用Stringbuilder去拼接字符

再就是StringBuilder了

SringBuilder的使用场景无非就是拼接字符串,但是StringBuffer也有同样的功能,那么这两个的运行效率谁会更高呢?
当然是StringBuilder毫无疑问,至于为什么等会告诉你。

说道效率问题,那就不得说说为啥StringBuilder为什么会更快一点了

因为StringBuilder是在 单线程环境下运行的,换句话说就是不支持多线程。在多线程环境下会导致 数据不安全。

这下应该知道了为什么StringBuffer为什么会慢一点了吧,但是它是怎么保证线程安全的呢?

通过StringBuffer的源码不难发现,在append的方法上添加了Synchronized的关键字

public synchronized StringBuffer append(StringBuffer sb) {
    toStringCache = null;
    super.append(sb);
    return this;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值