共同学习Java源代码--常用工具类--AbstractStringBuilder(四)
来源:互联网 发布:换手率软件怎么用 编辑:程序博客网 时间:2024/06/10 03:00
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的最后。
0 0
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(四)
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(一)
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(二)
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(三)
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(五)
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(六)
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(七)
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(八)
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(九)
- 共同学习Java源代码--常用工具类--StringBuffer(四)
- 共同学习Java源代码--常用工具类--StringBuffer(一)
- 共同学习Java源代码--常用工具类--StringBuffer(二)
- 共同学习Java源代码--常用工具类--StringBuffer(三)
- 共同学习Java源代码--数据结构--AbstractList抽象类(四)
- 共同学习Java源代码--数据结构--ArrayList类(四)
- 共同学习Java源代码--数据结构--LinkedList类(四)
- 共同学习Java源代码-数据结构-AbstractMap抽象类(四)
- 共同学习Java源代码-多线程与并发-ThreadPoolExecutor类(四)
- ubuntu16.04体验
- Java IO流
- 易學原論(4288_1)
- 网络爬虫
- Git使用
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(四)
- makefile shell下实现自动编译的脚本语言!
- 06@设计模式-(04)建造者模式
- elgg添加网页方法
- [剑指offer]斐波那契数列
- vb.net操作excel时,如何判断单元格内容为空
- 版本控制之道 — 使用Git 笔记
- redis基本使用规则!
- Irrlicht学习笔记(2)--quake3map