问题:
StringBuilder带参数初始化时,String和int类型结果不一致。
String string1 =new StringBuilder("test").toString();//"test"
String string2 =new StringBuilder(4).toString();//""
源码:
public StringBuilder() {
super(16);
}
public StringBuilder(int capacity) {
super(capacity);
}
public StringBuilder(String str) {
super(str.length() + 16);
append(str);
}
总结:
1、调用无参构造StringBuilder()会初始化默认容量为16。
2、调用有参构造,传入字符串str,StringBuilder(String str)会初始化容量为:16+str.length(),但是此处会判断value数组容量是否充足,如果容量不够就需要进行扩容。并且会拼接字符串str,此时value数组中元素个数为str.length()。
3、调用有参构造,传入int类型字面值capacity,StringBuilder(int capacity)会初始化容量为capacity。