StringBuffer 是 Java 中代表線程安全、可變字符序列的核心類。與不可變的 String 不同,StringBuffer 允許在不創建新對象的情況下修改字符內容,且所有公共方法均經過同步處理,適合多線程環境下的字符串操作。
public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable, CharSequence
關鍵點解讀:
大多數方法均以 synchronized 修飾;少數未直接加鎖的方法(如 length()、capacity())內部調用的父類方法同樣保證了線程安全。
| 構造器 | 說明 | 初始容量 |
|---|---|---|
StringBuffer() | 無參構造,創建空緩衝區 | 16 |
StringBuffer(int capacity) | 指定初始容量 | capacity |
StringBuffer(String str) | 以指定字符串初始化 | str.length() + 16 |
StringBuffer(CharSequence seq) | 以 CharSequence 初始化 | seq.length() + 16 |
public static void main(String[] args) {
// 無參構造
StringBuffer s1 = new StringBuffer();
System.out.println("長度: " + s1.length()); // 0
System.out.println("容量: " + s1.capacity()); // 16
// 指定容量
StringBuffer s2 = new StringBuffer(10);
System.out.println("容量: " + s2.capacity()); // 10
// 字符串初始化
StringBuffer s3 = new StringBuffer("abc");
System.out.println("容量: " + s3.capacity()); // 19
System.out.println("內容: " + s3); // abc
}