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];
}
本文详细解析Java中的String类不可变性及StringBuffer与StringBuilder的区别,包括它们的内部实现和使用场景。String类的final属性确保了字符串值的不可变性,而StringBuffer和StringBuilder则提供了可变字符串操作,但StringBuffer实现了线程安全。通过对比分析,理解Java字符串操作的最佳实践。
1498

被折叠的 条评论
为什么被折叠?



