java源码分析(5)-StringBuilder

来源:互联网 发布:社交大数据 编辑:程序博客网 时间:2024/06/08 15:15


StringBuilder

1.StringBuilder类

StringBuilder类由final修饰,不能被继承,并且继承了AbstractStringBuilder类,并完成了toString方法,同时使用了AbstractStringBuilder类中大量的方法。

public final class StringBuilder    extends AbstractStringBuilder    implements java.io.Serializable, CharSequence{    public StringBuilder() {super(16);//StringBuilder的默认原始容量为16    }    public StringBuilder(int capacity) {super(capacity);    }    public StringBuilder(String str) {super(str.length() + 16);//new StringBulider时传入一个字符串,则容量为字符串长度+16append(str);    }    public StringBuilder(CharSequence seq) {        this(seq.length() + 16);        append(seq);    }

2.append()

StringBuilder中的append方法基本都是直接调用父类AbstractStringBuilder中的方法,代码在AbstractStringBuilder中已经分析过,不再分析。但要注意的是StringBuilder中append方法全部都为线程不安全,是牺牲了安全用以实现性能。若需要考虑线程的安全性,建议使用StringBuffer。

3.序列化与反序列化

writeObject方法用于将对象序列化,由代码可见,写入了count和value。

readObject方法用于反序列化,将count和value属性读取出来

 private void writeObject(java.io.ObjectOutputStream s)        throws java.io.IOException {        s.defaultWriteObject();        s.writeInt(count);//写入count属性        s.writeObject(value);//写入value属性    }    private void readObject(java.io.ObjectInputStream s)        throws java.io.IOException, ClassNotFoundException {        s.defaultReadObject();        count = s.readInt();//读取count属性        value = (char[]) s.readObject();//读取value属性    }


1 0
原创粉丝点击