Java 比较 String StringBuilder StringBuffer


1. String 与 StringBuilder

  • 在进行拼接时,StringBuilder 的运行时间只有 String 的1‰,因为 String 内容不可变长度固定,String 的拼接其实是创建新的 String 对象,再把拼接后的内容赋值给新的对象,在频繁修改的情况下会频繁创建对象;而 StringBuilder 在 append 时并不是用 String 存储,而是放到一个 value 的 char 数组中,用数组来扩容,这样就不需要创建对象了,从头到尾只有一个实例对象;

2. StringBuilder 与 StringBuffer

  • StringBuffer 是线程安全的,即保证同步;
  • StringBuilder 提供一个与 StringBuffer 兼容的 API,但不保证同步,也就是说 StringBuilder 线程不安全;
  • StringBuilder 常用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单线程使用时,因为它比 StringBuffer 快;
  • 当字符串缓冲区被多个线程使用时,JVM 不能保证 StringBuilder 的操作是安全的,但可以保证 StringBuffer 是正确操作;

3. 选择的总结

  • 操作较少数据时,推荐使用 String;
  • 操作大量数据,且单线程时,推荐使用 StringBuilder;
  • 操作大量数据,且多线程时,推荐使用 StringBuffer;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值