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

Java 字串完整指南:String、StringBuffer 建立、存取、修改、比較與效能考量

     編輯:Java 相關知識

核心類別

  • String:不可變字串,適合唯讀、共享場景。
  • StringBuffer:可變字串緩衝區,執行緒安全,適合頻繁修改。
  • StringBuilder(JDK 5+):可變、非執行緒安全,單執行緒效能優於 StringBuffer。

1. 字串常值

雙引號括住的字元序列:"Hello World!"。編譯器自動建立 String 物件並存入字串常量池。

2. String 建構子常用形式

new String()                              // 空字串
new String(char[] value)                  // 字元陣列
new String(char[] value, int offset, int count) // 部份字元陣列
new String(byte[] bytes, int hibyte)      // 位元組陣列(高位元組)
new String(String original)               // 複製既有字串

範例:多種方式建立 "abc"

char[] c1 = {'a','b','c'};
char[] c2 = {'a','b','c','d','e'};
byte[] b1 = {97,98,99};
byte[] b2 = {97,98,99,100,101};

String s1 = new String(c1);
String s2 = new String(c2, 0, 3);
String s3 = new String(b1, 0);
String s4 = new String(b2, 0, 0, 3);

3. StringBuffer 建構子

new StringBuffer()           // 容量 16 字元
new StringBuffer(int capacity) // 指定初始容量
new StringBuffer(String str)   // 依字串內容建立,額外預留 16 字元

4. 存取字串資訊

String 主要方法

  • length():字元數
  • charAt(int index):指定索引字元
  • indexOf(int ch / String str [, int fromIndex]):首次出現位置
  • lastIndexOf(...):最後出現位置
  • getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin):複製字元到陣列
  • getBytes(...):複製位元組到陣列
  • toCharArray():轉為字元陣列

StringBuffer 主要方法

  • length()、charAt()、getChars():用法同 String
  • capacity():取得目前緩衝區容量(通常 ≥ length)

5. 修改字串(產生新字串)

String 方法(回傳新 String,原物件不變)

  • concat(String str):連接字串
  • replace(char old, char new):取代字元
  • substring(int begin [, int end]):擷取子字串
  • toLowerCase() / toUpperCase():大小寫轉換

StringBuffer 方法(修改本身,回傳 this 供串連)

  • append(String str):尾端附加
  • insert(int offset, String str):指定位置插入
  • setCharAt(int index, char ch):設定指定索引字元

關鍵差異:String 操作產生新物件,原物件不變;StringBuffer 直接修改內部緩衝區,超過容量自動擴充。

6. 其他常用操作

字串比較

  • equals(Object obj):比較內容是否相同
  • equalsIgnoreCase(String str):忽略大小寫比較內容
  • ==:比較參考位址(是否同一物件),不可用於比較內容。

物件轉字串

所有類別繼承 Object.toString(),建議覆寫以提供有意義的字串表示。

字串連接運算子 +

String s = "He is " + age + " years old.";
// 編譯器轉換為:
String s = new StringBuffer("He is ").append(age).append(" years old.").toString();

Java 僅對 + 進行運算子多載,其他運算子不支援多載。

效能建議

  • 大量字串拼接(迴圈中)請使用 StringBuilder(單執行緒)或 StringBuffer(多執行緒)。
  • 避免在迴圈中使用 + 或 concat,會產生大量暫時物件導致 GC 壓力。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved