参考: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
4821

被折叠的 条评论
为什么被折叠?



