String、StringBuffer与StringBuilder之间区别

2 篇文章 0 订阅

三者在执行速度方面的比较:StringBuilder >  StringBuffer  >  String


2 String 内容不可变,StringBuffer,StringBuilder内容可变


            StringBuilder:线程非安全的

    StringBuffer:线程安全的  


对于三者使用的总结:1.如果要操作少量的数据用 = String
                    2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
                    3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer



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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值