【JDK1.8源码】AbstractStringBuilder、StringBuffer、StringBuilder
AbstractStringBuilder
1 | /*抽象类 |
成员变量
1 | char[] value; //底层是一个可变的字符数组 |
构造器
1 | //无参构造器 |
扩容机制
1 |
|
其他方法
trimToSize()
:如果value数组的容量有多余的,那么就把多余的全部都释放掉append()
delete()
insert()
relpace()
方法都是调用System.arrayCopy()
或者Arrays.copyOf()
方法reverse
方法是设置两个指针分别指向中间元素和中间边上的元素,交换后向两侧移动,直至整个数组颠倒完成
StringBuffer
- 线程安全的可变字符序列
1 | //继承自AbstractStringBuilder,实现了Serializable、CharSequence两个接口 |
成员变量
1 | //??? |
构造器
线程安全
1 | //使用synchronized关键字修饰,确保线程安全 |
- 对数组进行修改的方法中会先将数组toStringCache置空
1
2
3
4
5
6
public synchronized StringBuffer append(char c) {
toStringCache = null;
super.append(c);
return this;
}
StringBuilder
- 非线程安全、可变的字符序列
- 运行速度快,一般情况(单线程)推荐使用
1 | public final class StringBuilder |
构造器
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.