源码看JAVA【三】StringBuffer与StringBuilder

1、AbstractStringBuilder 下的append方法

     public AbstractStringBuilder append(String str) {
        if (str == null)
            return appendNull();
        int len = str.length();
        ensureCapacityInternal(count + len);
        str.getChars(0, len, value, count);
        count += len;
        return this;
    }

2、StringBuffer实现

     public synchronized StringBuffer append(String str) {
        toStringCache = null;
        super.append(str);
        return this;
    }

3、StringBuilder实现

     public StringBuilder append(String str) {
        super.append(str);
        return this;
    }

4、如上,类似的StringBuffer的相关操作方法都加了synchronized 修饰,是线程安全的

StringBuilder未加修饰,非线程安全。

5、append方法根据getChars直接复制字符到当前对象之后,未产生新的对象,避免了不断创建字符串对象。


   转载规则


《源码看JAVA【三】StringBuffer与StringBuilder》 Euler 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录