java.lang.String 是 Java 使用頻率最高的類別之一。本文系統整理其核心 API,分類講解並提供可直接執行的範例代碼,幫助開發者快速掌握字串操作精髓。
String str = "I like JAVA";
charAt(4) // 'k' - 取得指定索引的 char
codePointAt(8) // 74 ('J') - 取得 Unicode 碼點
codePointBefore(2) // 32 (空格) - 取得索引前一個碼點
codePointCount(0,3) // 3 - 範圍內碼點數量(支援增補字元)
compareTo("I like PHP") // 負數:'J' < 'P',按字典序比較
compareToIgnoreCase("I LIKE php") // 0 - 忽略大小寫比較
規則:首個不同字元的碼點差;若前綴相同則比較長度差。
concat(" too") // "I like JAVA too" - 尾部拼接
contains("JAVA") // true - 是否包含子序列
endsWith("JAVA") // true - 是否以指定後綴結尾
startsWith("I") // true - 是否以指定前綴開頭
equals("I like JAVA") // true - 內容相等
equalsIgnoreCase("i LiKe java") // true - 忽略大小寫
// 注意:== 比較參考地址,內容比較必須用 equals()
// 通用格式化
String.format("%d年%02d月%02d日", 2024, 1, 15) // "2024年01月15日"
// 日期時間格式化 (需 Locale)
Date now = new Date();
String.format(Locale.TAIWAN, "%tY年%tm月%td日 %tH:%tM", now, now, now, now, now);
// 輸出:2024年01月15日 14:30
常用轉換字元:%d整數 %f浮點 %s字串 %tX日期時間組合。
getBytes() // 平台預設編碼 (UTF-8/Big5 等)
getBytes(StandardCharsets.UTF_8) // 指定編碼 (Java 7+ 推薦)
getBytes("UTF-8") // 字串指定編碼 (舊版相容)
⚠️ 跨平台務必指定編碼,避免亂碼。
substring(2) // "like JAVA" - 從索引 2 到結尾
substring(2, 6) // "like" - [2,6) 區間
subSequence(2, 6) // 介面 CharSequence 實作,行為同 substring
split(" ") // ["I", "like", "JAVA"] - 正則分割
split(" ", 2) // ["I", "like JAVA"] - 限制分割次數
replace('A', 'a') // "I like Java" - 字元替換
replace("JAVA", "Java") // 字串替換
replaceAll("\\d+", "#") // 正則替換所有數字
replaceFirst("\\d+", "#") // 正則替換首個數字
trim() // 移除首尾空白字元 (含 \\t\\n\\r)
strip() // Java 11+ Unicode 感知修剪
toUpperCase() // "I LIKE JAVA"
toLowerCase(Locale.ROOT) // "i like java" - 指定 Locale 避免土耳其語 I/ı 問題
String s1 = new String("Hello");
String s2 = "Hello";
s1 == s2 // false - 不同物件
s1.intern() == s2 // true - intern() 返回常量池引用
// 編譯期常量自動進池
"Hel" + "lo" == "Hello" // true
new String("Hel") + "lo" == "Hello" // false
原則:字面量自動進池;new String() 強制建立新物件;intern() 手動入池/查池。
matches("\\d{4}") // false - 整串匹配
"2024".matches("\\d{4}") // true
StringBuilder (非執行緒安全) 或 StringBuffer (執行緒安全)+=,每次都會建立新 String 物件String.join()、String::format 等現代 APIpublic class StringDemo {
public static void main(String[] args) {
String str = "I like JAVA";
System.out.println("charAt(2): " + str.charAt(2));
System.out.println("contains JAVA: " + str.contains("JAVA"));
System.out.println("replace: " + str.replace("JAVA", "Java"));
System.out.println("split: " + Arrays.toString(str.split(" ")));
System.out.println("format: " + String.format("%s %d", "Version", 1));
}
}
掌握 String 核心 API,關鍵在於理解不可變性、編碼轉換、常量池機制與正則整合。實務上善用 StringBuilder、StandardCharsets、Locale 等現代工具類,能寫出高效、跨平台、無亂碼的字串處理代碼。