StringBuffer源码阅读

文章目录

  • 一.参数说明
  • 二.方法说明
    • 1.toString

一.参数说明

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源码阅读

你可能感兴趣的:(#,Java源码分析,源码阅读)