当创建对象时赋值,它的值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