public AbstractStringBuilder append(CharSequence s, int start, int end) {
if (s == null)
s = "null";
if ((start < 0) || (start > end) || (end > s.length()))
throw new IndexOutOfBoundsException(
"start " + start + ", end " + end + ", s.length() "
+ s.length());
int len = end - start;
ensureCapacityInternal(count + len);
for (int i = start, j = count; i < end; i++, j++)
value[j] = s.charAt(i);
count += len;
return this;
}
这个方法传入三个参数,一个是CharSequence的实现类对象s,一个是起始下标,最后一个是结束下标。
先判断s是否为空,如果为空,则将s赋值为"null"。
再判断参数中两个下标是否越界,越界就抛出异常。
然后创建变量len,其值为下标之差。接下来给value扩容。
然后进入for循环,将s中的每一个元素追加在value之后,count进行自增。
返回本字符串对象。
public AbstractStringBuilder append(char[] str) {
int len = str.length;
ensureCapacityInternal(count + len);
System.arraycopy(str, 0, value, count, len);
count += len;
return this;
}
这个方法传入一个数组,实现原理和上面的很类似,就是先将value扩容,然后进行数组拷贝。最后返回本对象。
public AbstractStringBuilder append(char str[], int offset, int len) {
if (len > 0) // let arraycopy report AIOOBE for len < 0
ensureCapacityInternal(count + len);
System.arraycopy(str, offset, value, count, len);
count += len;
return this;
}
这个方法和上面的很像,就是将offset作为参数字符数组的起始下标,将len作为复制的长度,然后进行数组拷贝,最后返回本对象。
public AbstractStringBuilder append(boolean b) {
if (b) {
ensureCapacityInternal(count + 4);
value[count++] = 't';
value[count++] = 'r';
value[count++] = 'u';
value[count++] = 'e';
} else {
ensureCapacityInternal(count + 5);
value[count++] = 'f';
value[count++] = 'a';
value[count++] = 'l';
value[count++] = 's';
value[count++] = 'e';
}
return this;
}
这个方法就是拼接布尔值,将布尔值拼成字符串。
public AbstractStringBuilder append(char c) {
ensureCapacityInternal(count + 1);
value[count++] = c;
return this;
}
这个方法是拼接字符。就是将参数放到扩容后的value的最后。
if (s == null)
s = "null";
if ((start < 0) || (start > end) || (end > s.length()))
throw new IndexOutOfBoundsException(
"start " + start + ", end " + end + ", s.length() "
+ s.length());
int len = end - start;
ensureCapacityInternal(count + len);
for (int i = start, j = count; i < end; i++, j++)
value[j] = s.charAt(i);
count += len;
return this;
}
这个方法传入三个参数,一个是CharSequence的实现类对象s,一个是起始下标,最后一个是结束下标。
先判断s是否为空,如果为空,则将s赋值为"null"。
再判断参数中两个下标是否越界,越界就抛出异常。
然后创建变量len,其值为下标之差。接下来给value扩容。
然后进入for循环,将s中的每一个元素追加在value之后,count进行自增。
返回本字符串对象。
public AbstractStringBuilder append(char[] str) {
int len = str.length;
ensureCapacityInternal(count + len);
System.arraycopy(str, 0, value, count, len);
count += len;
return this;
}
这个方法传入一个数组,实现原理和上面的很类似,就是先将value扩容,然后进行数组拷贝。最后返回本对象。
public AbstractStringBuilder append(char str[], int offset, int len) {
if (len > 0) // let arraycopy report AIOOBE for len < 0
ensureCapacityInternal(count + len);
System.arraycopy(str, offset, value, count, len);
count += len;
return this;
}
这个方法和上面的很像,就是将offset作为参数字符数组的起始下标,将len作为复制的长度,然后进行数组拷贝,最后返回本对象。
public AbstractStringBuilder append(boolean b) {
if (b) {
ensureCapacityInternal(count + 4);
value[count++] = 't';
value[count++] = 'r';
value[count++] = 'u';
value[count++] = 'e';
} else {
ensureCapacityInternal(count + 5);
value[count++] = 'f';
value[count++] = 'a';
value[count++] = 'l';
value[count++] = 's';
value[count++] = 'e';
}
return this;
}
这个方法就是拼接布尔值,将布尔值拼成字符串。
public AbstractStringBuilder append(char c) {
ensureCapacityInternal(count + 1);
value[count++] = c;
return this;
}
这个方法是拼接字符。就是将参数放到扩容后的value的最后。