当创建对象时赋值,它的值capacaty+字符串的长度
当对其进行append,insert
增加时,capacaty
变化和追加的字符串长度有关
该capacaty
规则对增加字符串长度的都满足,如insert
,append
,replace
同时继承的是AbstractStringBuilder
,对StringBuilder
和StringBuffer
都满足
写一个append
查看它的底层
1、可以看到StringBuilder
调用了父类的append方法
1 | public StringBuilder append(String str) { |
2、我们查看sppend追加方法的父类AbstractStringBuilder
,
1 | public AbstractStringBuilder append(String str) { |
3、其中有一个ensureCapacityInternal(count + len);
保证内部容器的安全措施,查看
1 | private void ensureCapacityInternal(int minimumCapacity) { |
- 这里的
minimumCapacity
为新添加的数据长度和已有数据长度的和
4、其中的一个newCapacity
即为新容器的大小,点开
1 | private int newCapacity(int minCapacity) { |
5、可以看到对于容器变化的规则
- 首先新的容器为原容器的二倍加二,之后再和
minimumCapacity
进行比较
参考文章:https://blog.csdn.net/cuncaojin/article/details/78925234