一、StringBuilder
1.继承关系
可见StringBuilder直接继承至AbstractStringBuilder
2.构造器
1)StringBuilder的构造器
public StringBuilder() {
super(16);
}
public StringBuilder(int capacity) {
super(capacity);
}
public StringBuilder(String str) {
super(str.length() + 16);
append(str);
}
public StringBuilder(CharSequence seq) {
this(seq.length() + 16);
append(seq);
}
这些构造器都调用了父类(即AbstractStringBuilder类)的构造器,我们看一下AbstractStringBuilder的构造器
2)AbstractStringBulider的构造器
char[] value;//用于字符存储
int count;//已使用字符数
AbstractStringBuilder(int capacity) {
value = new char[capacity];
}
当调用这个构造器时,会生成容量为capacity的char数组,如果StringBuilder没有传入capacity,则会调用super(16),即默认构造一个容量为16的字符数组
3.append方法(自动扩容原理)
虽然我们一开始指定了字符数组value的容量,但StringBuilder构造的对象是一个可变对象,调用append方法会占用容量,当容量不足时,会自动扩容
1)StringBuilder的append方法
@Override
public StringBuilder append(Object obj) {
return append(String.valueOf(obj));
}
@Override
public StringBuilder append(String str) {
super.append(str);
return this;
}
...省略部分重载方法
StringBuilder的append方法有很多重载方法,但这些重载方法又都共同的调用了父类(AbstractStringBuilder)的append方法
2)AbstractStringBuilder的append方法
public AbstractStringBuilder