一.参数说明
StringBuffer也是继承自AbstractStringBuilder类,所以他也继承了这边的char [] value和count参数
//声明为transient的数组变量说明不会跟着序列化出去
//用来缓存toString()方法返回的最近一次的value数组中的字符。当修改StringBuffer对象时会被清除。
private transient char[] toStringCache;
//用来存储字符序列中的字符。value是一个动态的数组,当存储容量不足时,会对它进行扩容。
char[] value;
//表示value数组中已存储的字符数
int count;
二.方法说明
StringBuffer的几乎所有方法都加上了synchronized的标识,就是为了保证他的同步性
1.toString
toString方法会把缓存的最后一次改变的数组通过String构造函数返回
@Override
public synchronized String toString() {
//如果是空的话,就重新复制一份
if (toStringCache == null) {
toStringCache = Arrays.copyOfRange(value, 0, count);
}
//直接返回String
return new String(toStringCache, true);
}
其他方法因为基本是使用AbstractStringBuilder继承下来的方法加上同步字段,不多赘述,可以参考:
StringBuilder源码阅读