問題:
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。