简述 string 对象,StringBuffer、StringBuilder 区分

string

是 final 的,内部用一个 final 类型的 char 数组存储数据,它的拼接效率比较低,实际上是通过建立一个 StringBuffer,让后台调用 append(),最后再将 StringBuffer toSting(),每次操作 Sting 都会重新建立新的对象来保存新的值.这样原来的对象就没用了,就要被垃圾回收.这也是要影响性能的。

StringBuffer

也是 final,线程安全的,中采用一个 char 数组来保存需要 append 的字符串,char 数组有一个初始大小,当 append 的字符串长度超过当前 char 数组容量时,则对 char 数组进行动态扩展,也即重新申请一段更大的内存空间,然后将当前 char 数组拷贝到新的位置,因为重新分配内存并拷贝的开销比较大,所以每次重新申请内存空间都是采用申请大于当前需要的内存空间的方式,这里是 2 倍。

StringBuilder

线程不安全。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值