目录:
StringBuilder类的append(String str)方法的执行过程
StringBuilder类的append(String str)方法的执行过程:
- 字符串在StringBuilder类中以字符数组的形式储存
char[] value;//The value is used for character storage.
- StringBuilder类的append(String str)方法
public StringBuilder append(String str) {
super.append(str);
return this;
}
- 父类AbstractStringBuilder类的append(String str)方法
public AbstractStringBuilder append(String str) {
if (str == null)
return appendNull();
int len = str.length();
ensureCapacityInternal(count + len);
str.getChars(0, len, value, count);
count += len;
return this;
}
- 执行过程:
- 1. 将str作为参数,调用父类AbstractStringBuilder类的append(String str)方法
-
1.判断str是否为null(null代表str没有指向任何一个String类型的对象)。如果str为null,则调用appendNull()方法,在value指向的字符数组中的原字符串后面加入’n’、‘u’、‘l’、'l’四个字符,然后结束AbstractStringBuilder类的append(String str)方法。如果str不为null,则继续执行
-
2.调用ensureCapacityInternal(int minimumCapacity)方法,确保value指向的字符数组长度 >= 原字符串的长度+将要拼接的字符串的长度
-
3.将str对象中存储字符串的字符数组内容复制到value指向的字符数组中的原字符串后面
-
- 2.返回当前对象
- 1. 将str作为参数,调用父类AbstractStringBuilder类的append(String str)方法
ensureCapacityInternal(int minimumCapacity)方法
private void ensureCapacityInternal(int minimumCapacity) {
if (minimumCapacity - value.length > 0) {
value = Arrays.copyOf(value,newCapacity(minimumCapacity));
}
}
<