StringBuilder定义
public final class StringBuilder
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence
{
}
StringBuilder同StringBuffer一样,被final修饰,继承AbstractStringBuilder类,实现了Serializable、CharSequence
两个接口,不同的是StringBuilder没有toStringCache。
其构造方法、扩容机制也和StringBuffer一样,默认16长度,扩容两倍+2.
public StringBuffer() {
super(16);
}
主要方法也都继承自AbstractStringBuilder抽象类,与StringBuffer不同的是,StringBuilder的方法没有被
synchronized关键字修饰,是线程不安全的,但是效率会比StringBuffer高。
@Override
public StringBuilder append(Object obj) {
return append(String.valueOf(obj));
}
@Override
public StringBuilder delete(int start, int end) {
super.delete(start, end);
return this;
}
@Override
public StringBuilder insert(int index, char[] str, int offset,
int len)
{
super.insert(index, str, offset, len);
return this;
}
String,StringBuffer,StringBuilder三者的区别?
1.String用来存储值得数组是final的,StringBuffer、StringBuilder的不是,所以String用来存储不可变字符串,
StringBuilder、StringBuffer用来存储可变字符串。
2.StringBuffer、StringBuilder都继承AbstractStringBuilder类,拥有相同作用的方法,不同之处是StringBuffer的方法都使用synchronized修饰,是线程安全的。StringBuilder则没有。
所以:
String用来存储不可变字符串;
单线程环境下处理可变字符串:StringBuilder;
多线程环境下处理可变字符串:StringBuffer;