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

Java String 類核心方法深度解析與實戰範例

     編輯:Java 相關知識

前言

java.lang.String 是 Java 使用頻率最高的類別之一。本文系統整理其核心 API,分類講解並提供可直接執行的範例代碼,幫助開發者快速掌握字串操作精髓。

1. 字元與碼點操作

String str = "I like JAVA";

charAt(4)           // 'k' - 取得指定索引的 char
codePointAt(8)      // 74 ('J') - 取得 Unicode 碼點
codePointBefore(2)  // 32 (空格) - 取得索引前一個碼點
codePointCount(0,3) // 3 - 範圍內碼點數量(支援增補字元)

2. 比較與排序

compareTo("I like PHP")       // 負數:'J' < 'P',按字典序比較
compareToIgnoreCase("I LIKE php") // 0 - 忽略大小寫比較

規則:首個不同字元的碼點差;若前綴相同則比較長度差。

3. 連接與判斷

concat(" too")        // "I like JAVA too" - 尾部拼接
contains("JAVA")      // true - 是否包含子序列
endsWith("JAVA")      // true - 是否以指定後綴結尾
startsWith("I")       // true - 是否以指定前綴開頭

4. 相等性判斷

equals("I like JAVA")         // true - 內容相等
equalsIgnoreCase("i LiKe java") // true - 忽略大小寫
// 注意:== 比較參考地址,內容比較必須用 equals()

5. 格式化輸出

// 通用格式化
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日期時間組合。

6. 編碼與位元組轉換

getBytes()                    // 平台預設編碼 (UTF-8/Big5 等)
getBytes(StandardCharsets.UTF_8) // 指定編碼 (Java 7+ 推薦)
getBytes("UTF-8")             // 字串指定編碼 (舊版相容)

⚠️ 跨平台務必指定編碼,避免亂碼。

7. 子字串與分割

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"] - 限制分割次數

8. 替換與修剪

replace('A', 'a')      // "I like Java" - 字元替換
replace("JAVA", "Java") // 字串替換
replaceAll("\\d+", "#") // 正則替換所有數字
replaceFirst("\\d+", "#") // 正則替換首個數字
trim()                 // 移除首尾空白字元 (含 \\t\\n\\r)
strip()                // Java 11+ Unicode 感知修剪

9. 大小寫轉換

toUpperCase()          // "I LIKE JAVA"
toLowerCase(Locale.ROOT) // "i like java" - 指定 Locale 避免土耳其語 I/ı 問題

10. 字串常量池與 intern()

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() 手動入池/查池。

11. 正則匹配

matches("\\d{4}")      // false - 整串匹配
"2024".matches("\\d{4}") // true

12. 效能建議

  • 大量拼接用 StringBuilder (非執行緒安全) 或 StringBuffer (執行緒安全)
  • 避免循環中 +=,每次都會建立新 String 物件
  • Java 9+ 使用 String.join()、String::format 等現代 API

完整可執行範例

public 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 等現代工具類,能寫出高效、跨平台、無亂碼的字串處理代碼。

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