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

Java 字符串處理核心:StringBuilder 與 StringBuffer 完整指南

     編輯:Java 綜合教學

Java 字符串處理核心:StringBuilder 與 StringBuffer 完整指南

在 Java 中頻繁修改字符串時,String 的不可變特性會產生大量臨時對象,嚴重影響性能。StringBuilder 與 StringBuffer 提供可變字符序列,是高效字符串操作的首選。

一、StringBuilder 類(非線程安全、高性能)

1. 認識 StringBuilder

String 拼接會創建新對象:

String s = "hello";
s += "world"; // 實際創建了 "helloworld" 新對象,原 "hello" 成垃圾

StringBuilder 內部維護字符數組,擴容時才複製,避免頻繁創建對象。

StringBuilder sb = new StringBuilder("hello");
sb.append("world"); // 直接在內部數組擴展,無新對象

2. 常用方法

  • append(x):追加內容,返回自身(鏈式調用)
  • insert(offset, x):指定位置插入
  • delete(start, end):刪除區間字符
  • reverse():反轉序列
  • toString():轉為 String

3. 實戰案例:每三位插入逗號

public static void main(String[] args) {
    StringBuilder sb = new StringBuilder("jaewkjldfxmopzdm");
    for (int i = sb.length() - 3; i > 0; i -= 3) {
        sb.insert(i, ",");
    }
    System.out.println(sb); // jae,wkj,ldf,xmo,pzd,m
}

二、StringBuffer 類(線程安全)

1. 構造方法

  • StringBuffer():空序列,初始容量 16
  • StringBuffer(String str):包含指定字符串
  • StringBuffer(int capacity):指定初始容量

2. 核心方法示例

StringBuffer sb = new StringBuffer("test");
sb.append(" String Buffer"); // test String Buffer

StringBuffer sb2 = new StringBuffer("數字");
for (int i = 0; i <= 9; i++) sb2.append(i); // 數字0123456789
sb2.delete(8, sb2.length()).insert(0, new char[]{'a','b','c'}); // abc數字01
System.out.println(sb2.reverse()); // 10cba數字

三、選擇建議:StringBuilder vs StringBuffer

特性StringBuilderStringBuffer
線程安全否是(方法同步)
性能高較低
適用場景單線程、高頻字符串操作多線程共享字符串緩衝區

原則:優先使用 StringBuilder(JDK 5+ 引入),僅在多線程環境下共享緩衝區時使用 StringBuffer。

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