首先查看builder对象的初始化
StringBuilder builder = new StringBuilder();
在该方法内指向了超类的构造方法,并传入了一个int值,它的形参名为:容积(capacity)
public StringBuilder() {
super(16);//这是一个固定的值
}
- 在创建StringBuilder对象时传入的如果是String类型的话会固定有一个16的长度,即使在创建的时候就定义了一个字符串,在底层创建数组时仍然是 字符串长度+16
- 在数组创建完成后仍然会通过append来将字符串追加到数组中
public StringBuilder(String str) {
super(str.length() + 16);
append(str);
}
- 唯一的另类就是在初始化对象时,传参传的是int类型的值时,StringBuilder会将该值替换掉默认的容量,以该容量进行数组的初始化
public StringBuilder(int capacity) {
super(capacity);
}
跟随该指向我们来到了超类AbstractStringBuilder中
超类中初始定义了一个字符数组value,一个整数count
char[] value; //该数组就是buffer与builder的底层所指向的那个数组
int count; //count主要是用来对数组长度进行计数
在该构造方法中,将我们从下面传过来的int值定义为value数组的长度
AbstractStringBuilder(int capacity) {
value = new char[capacity];
}
</