问题:

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。