天天看點

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源碼閱讀

繼續閱讀