1、String:不可变字符序列 为何?看源码 因为源码加了 final
2、StringBuilder:可变字符序列,初始化的时候调用了
public StringBuilder() {
super(16);
}
自己的构造器,初始化的时候是一个长度为16的数组。
通过调用append()方法 可以添加字符序列。
其中append()方法中有可以为数组添长度的方法,如下
void expandCapacity(int minimumCapacity) {
int newCapacity = (value.length + 1) * 2;
if (newCapacity < 0) {
newCapacity = Integer.MAX_VALUE;
} else if (minimumCapacity > newCapacity) {
newCapacity = minimumCapacity;
}
value = Arrays.copyOf(value, newCapacity);
}
该方法在append()的时候为改数组添加了长度,但是没有创建新的数组对象,
而是替换了老的数组长度,从内存空间上节约了。至于添加长度为什么是
int newCapacity = (value.length + 1) * 2;
这就不得而知了。
补充:因为StringBuilder源码中,大多数方法都是
Return this 所以很多方法可以连用,他们称之为方法连。
比如,
StringBuildersb = new StringBuilder();
sb.append(1).append(2).append(3)…….以此类推
在这个浮躁的年代,我还要保持真的自己真的很难,但至少我在努力,从未放弃!