1、String类是不可变的因为字符串保存进
/** The value is used for character storage. */
private final char value[];
fianl 说明是不可变的
2、StringBuffer StringBuild 这两个类的区别是这两个类一个是线程安全另一个不安全,其实这两类的实现部分是在 AbstractStringBuilder 类中,不同的是StringBuffer加了synchronized关键字调用
public synchronized void ensureCapacity(int minimumCapacity) {
if (minimumCapacity > value.length) {
expandCapacity(minimumCapacity);
}
}
3、StringBuffer是可变的是他的值存在了 char[] value,如果这个类的初始化类默认char[]的size为16 public StringBuffer() {
super(16);
}
AbstractStringBuilder(int capacity) {
value = new char[capacity];
}
/** The value is used for character storage. */
private final char value[];
fianl 说明是不可变的
2、StringBuffer StringBuild 这两个类的区别是这两个类一个是线程安全另一个不安全,其实这两类的实现部分是在 AbstractStringBuilder 类中,不同的是StringBuffer加了synchronized关键字调用
public synchronized void ensureCapacity(int minimumCapacity) {
if (minimumCapacity > value.length) {
expandCapacity(minimumCapacity);
}
}
3、StringBuffer是可变的是他的值存在了 char[] value,如果这个类的初始化类默认char[]的size为16 public StringBuffer() {
super(16);
}
AbstractStringBuilder(int capacity) {
value = new char[capacity];
}