StringBuilder的append底层原理

参考:https://blog.csdn.net/qq_41868790/article/details/88970182

Stringbuilder对象及其成员简要说明:
value[] : 用来存储StringBuilder对象中的字符,以下称内容数组,其长度可在创建对象时通过构造函数初始化,若未初始化则默认初始长度为16
count: 记录StringBuilder对象中所存字符的实际数量,以下称实际内容长度Stringbuilder对象将所存储的内容存在value数组中,并通过count来记录内容的长度,所以count始终小于等于value数组的长度。

sb.append(str)的添加流程:

(1)内容数组容量是否足够 count + str.length > char.length?      足够       如果不大于现在的容量,则直接复制到最后添加即可。内容数组长度足够, 直接将str复制存入内容数组

(2)内容数组容量是否足够 count + str.length > char.length?   不足够   扩容,即扩大长度为原长度*2再加2,即char.length*2 + 2,此时再次比较是否足够,char.length*2 + 2 < count + str.length   ?

        i:  No  即足够,此时容量足够,将str复制存入内容数组, 此时内容数组长度为char.length*2 + 2。更新实际内容长度 count += len

       ii:yes 不足够,则内容数组长度增加至 count + str.length, 并将str复制存入内容数组,此时实际内容长度为:count += len

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值