根据源码总结String,StringBuffer,StringBuider差异

一,贴出三者的源码,做比较

String



StringBuffer



StringBuider



这样贴出来一目了然,差异很显然。下面总结归纳一下。

二,总结三者的差异

1,String, StringBuffer, StringBuilder 三者都实现了CharSequence接口,意思是这三者都是字符序列,他们的底层都是用char[]实现的,

2,但String和其他两者有很大的不同,String是不可变的,意思就是你在生成String对象后就不能改变其内部的char[]了,最初的char[]是什么就会一直是什么。这样设计的目的是简化存储(也就是String对象的共享)。
3,而StringBuffer, StringBuilder,则是可变的,意思是你在生成其对象后可以改变其内部的char[],比如扩容,插入,删除等,这两个类是用于动态创建字符串的。这两者都是继承于AbstractStringBuilder,也就是他们具有相同的API(调用方式相同),两者间的不同唯一就是StringBuffer是线程安全的(可用于并发环境),StringBuilder不是线性安全的(不能用于并发环境,如果使用,可能会出现问题)。当在单线程环境时最好使用StringBuilder,应为他不用检查对象锁,所以速度、效率要更高


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值