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时传入一个字符串,则容量为
字符串长度+16
append(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属性
}