String Buffer
Prerequisites:
字串存放位置
String Buffer繼承AbstractStringBuilder。
字串存放位置是在AbstractStringBuilder中的value變數,不是final,char[]陣列是物件,是存在Heap中。
1
2
3
4
char[] value;
AbstractStringBuilder(int capacity) {
value = new char[capacity];
}
String Buffer vs String
String存放字串的位置,是final的,所以更新字串,就是建立新的物件,因為final不能被修改內容。
String Buffer存放字串的位置,不是final,所以更新字串,是更新物件內容,因為不用重新建立物件,所以效率比較快。
建構子
StringBuffer的空建構子,預設建立char[16]的大小。
1
2
3
public StringBuffer() {
super(16);
}
可自訂char[]大小。
1
StringBuffer stringBuffer = new StringBuffer(100);
使用字串建立StringBuffer。
1
StringBuffer stringBuffer = new StringBuffer("Hello World");
建立char[字串長度 + 16]的大小。
1
2
3
4
public StringBuffer(String str) {
super(str.length() + 16);
append(str);
}
StringBuffer轉String
1
2
3
4
5
6
7
8
9
public class Test {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("Hello World");
String str1 = sb.toString();
String str2 = new String(sb);
System.out.println(str1);
System.out.println(str2);
}
}
Hello World
Hello World