完整路径:java.lang.StringBuffer
- StringBuffer继承了AbstractStringBuilder,AbstractStringBuilder是可变的字符序列抽象类,提供了针对字符串操作的常用接口。
/**
* 用来存储字符串的字节,这里可以看出来value字节数组不是不可变的,
*/
byte[] value;
/**
* 用于对值中的字节进行编码的编码的id。
*/
byte coder;
/**
* 这是使用的字节长度
*/
int count;
- StringBuffer是线程安全的类,从下面的方法中可以看出,它将对所有变量操作的方法使用synchronized加锁。这样可以保证数据是正确的
@Override
public synchronized int compareTo(StringBuffer another) {
return super.compareTo(another);
}
@Override
public synchronized int length() {
return count;
}
@Override
public synchronized int capacity() {
return super.capacity();
}
@Override
public synchronized void ensureCapacity(int minimumCapacity) {
super.ensureCapacity(minimumCapacity);
}
总结:StringBuffer是可变的字符序列,并且是线程安全的,但是缺点是加锁或者释放锁会损耗一定的性能,所以非必要不使用StringBuffer