首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java StringBuffer 類深度解析:線程安全的可變字符序列

     編輯:Java 綜合教學

StringBuffer 核心特性

StringBuffer 是 Java 中代表線程安全、可變字符序列的核心類。與不可變的 String 不同,StringBuffer 允許在不創建新對象的情況下修改字符內容,且所有公共方法均經過同步處理,適合多線程環境下的字符串操作。

源碼架構分析(基於 JDK 1.6)

public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable, CharSequence

關鍵點解讀:

  • final 修飾:類不可被繼承,保證實現的不可變性。
  • 繼承 AbstractStringBuilder:核心邏輯(擴容、追加、插入、刪除等)均委託給父類實現,StringBuffer 僅在方法層面添加同步鎖。
  • 實現 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
}

擴展閱讀建議

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved