capacity 容量
internal 内部的
StringBuilder
可变字符序列 线程不安全 效率高 里面的char是有加final
StringBuffer
可变字符序列 线程安全,效率低
都是AbstractStringBUilder的子类
而且该类里面的char[] value;没有加private 和final所以是可以同包修改因此是可变字符序列
而String 里面的 private final char value[];是加了private 和final因此是不可修改的字符序列
也可以看出 new一个StringBuilder的时候如果没有传参数则
默认建立16个长度的字符数组
append 是返回this自己的引用可以写append方法链
内存不够的时候是×2+2
扩容 jdk的源码分析
void expandCapacity(int minimumCapacity) {
int newCapacity = value.length * 2 + 2;
if (newCapacity - minimumCapacity < 0)
newCapacity = minimumCapacity;
if (newCapacity < 0) {
if (minimumCapacity < 0) // overflow
throw new OutOfMemoryError();
newCapacity = Integer.MAX_VALUE;
}
value = Arrays.copyOf(value, newCapacity);
}
常用方法分析
delete()//删除
replace()//取代
insert()//插入
reverse()//反转字符