目录
AbstractStringBuilder(int capacity)
ensureCapacity(int minimumCapacity)
AbstractStringBuilder是一个可变的字符序列。它实现了Appendable和CharSequence接口。
Appendable接口重载了append方法,表示它的实现类是可添加CharSequence和char的。
Appendable append(CharSequence csq) throws IOException;
Appendable append(CharSequence csq, int start, int end) throws IOException;
Appendable append(char c) throws IOException;
而CharSequence是一个可读的char序列。
//字符序列的长度
int length();
//获取指定位置的字符
char charAt(int index);
//获取它的子序列
CharSequence subSequence(int start, int end);
除了这些方法外,JDK 1.8还加入了2个default的方法:
public default IntStream chars() {
class CharIterator implements PrimitiveIterator.OfInt {
int cur = 0;
//如果当前位置不在末尾,说明hasNext为true
public boolean hasNext() {
return cur < length();
}
//获取当前位置的值
public int nextInt() {
if (hasNext()) { //如果hasNext为true,则获取当前位置的值
return charAt(cur++);
} else {
throw new NoSuchElementException();
}
}
//遍历字符序列,对于每一个字符都调用accept方法
@Override
public void forEachRemaining(IntConsumer block) {
for (; cur < length(); cur++) {
block.accept(charAt(cur));
}
}
}
//新起一个序列,利用StreamSupport.intStream方法将当前序列内容复制过去。
return StreamSupport.intStream(() ->
Spliterators.spliterator(
new CharIterator(),
length(),
Spliterator.ORDERED),
Spliterator.SUBSIZED | Spliterator.SIZED | Spliterator.ORDERED,
false);
}
下面是AbstractStringBuilder的内容。AbstractStringBuilder的属性有两个:
//用来存放字符的数组
char[] value;
//数组中字符的总数量
int count;
AbstractStringBuilder()
作用:无参构造函数。
AbstractStringBuilder(int capacity)
作用:创建指定容量的字符数组。
length()
作用:获取字符数量。
capacity()
作用:获取容量,也就是字符数组的大小。
ensureCapacity(int minimumCapacity)
作用:确保容量大于或等于指定的最小值。他调用了ensureCapacityInternal(minimumCapacity)方法。
扩容方法如下:
trimToSize()
作用:给字符序列缩容。
setLength(int newLength)
作用:设置字符序列的长度。