String、StringBuffer与StringBuilder之间区别

转自String、StringBuffer与StringBuilder之间区别


工作中很多时候都会用到String,封装类的时候为了方便省劲也是能用String就不用其他的(不建议这样做),关于字符串的操作有String,StringBuffer,StringBuilder三种形式,今天整理一下梳理一下记忆。


关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下

  1.   三者在执行速度方面的比较:StringBuilder >  StringBuffer  >  String
  2.   String <(StringBuffer,StringBuilder)的原因
        String:字符串常量(不可变)
        StringBuffer:字符串变量(线程安全
        StringBuilder:字符串变量(非线程安全
  3. Stirng具体慢的原因,String在设计的时候基于安全和性能的原因设置为final不可变,我们代码中对字符串的操作,实际上是重新new一个String对象返回,原来的对象没有引用会GC自动回收(JVM对String操作有优化,很多时候性能影响不明显),StringBuffer和StringBuilder是可变的,操作时不需要重新new对象,因此会比较快,而StringBuffer因为是线程安全的,所以会相对比StringBuilder慢一点。

 对于三者使用的总结: 
  1. 如果要操作少量的数据用 = String
  2. 单线程操作字符串缓冲区 下操作大量数据 = StringBuilder(线程非安全)
  3. 多线程操作字符串缓冲区 下操作大量数据 = StringBuffer(有buff就是安全,这个是线程安全的)

尽量确定StringBuffer的容量
StringBuffer 的构造器会创建一个默认大小(通常是16)的字符数组。在使用中,如果超出这个大小,就会重新分配内存,创建一个更大的数组,并将原先的数组复制过来,再 丢弃旧的数组。 在大多数情况下,你可以在创建 StringBuffer的时候指定大小,这样就避免了在容量不够的时候自动增长,以提高性能。 
如:StringBuffer buffer = new StringBuffer(1000);  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值