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

Java String 類核心方法全解析:從基礎操作到進階技巧

     編輯:Java 相關知識

前言

在 Java 開發中,String 是使用頻率最高的類之一。雖然我們每天都在用,但許多開發者僅停留在基本的拼接、截取層面。本文將系統梳理 String 的核心 API,涵蓋獲取、判斷、轉換、替換、分割、子串提取、大小寫轉換、去空格及比較等七大類常用操作,並附上完整可運行的示例代碼,助你徹底掌握字符串處理精髓。

一、 獲取信息

1.1 獲取長度

int length()

返回字符串中字符的數量(即 Unicode 代碼單元數)。

1.2 根據索引獲取字符

char charAt(int index)

返回指定索引處的字符,索引從 0 開始。若索引越界拋出 StringIndexOutOfBoundsException。

1.3 根據字符/子串查找索引

int indexOf(int ch)
int indexOf(int ch, int fromIndex)
int indexOf(String str)
int indexOf(String str, int fromIndex)

返回首次出現的位置;未找到返回 -1。支持從指定位置開始搜索。

1.4 反向查找

int lastIndexOf(String str)

從右向左查找,返回最後一次出現的位置,索引仍從左往右計數。

二、 判斷操作

2.1 是否包含子串

boolean contains(CharSequence s)

底層調用 indexOf,若返回值 != -1 則包含。也可直接用 indexOf(str) != -1 判斷。

2.2 是否為空串

boolean isEmpty()

等價於 length() == 0。

2.3/2.4 前綴/後綴判斷

boolean startsWith(String prefix)
boolean endsWith(String suffix)

常用於文件類型校驗、路徑匹配等場景。

2.5 內容比較

boolean equals(Object anObject)
boolean equalsIgnoreCase(String anotherString)

equals 區分大小寫,equalsIgnoreCase 忽略大小寫。切記不可用 == 比較字符串內容。

三、 類型轉換

3.1 字符數組 ↔ 字符串

// 構造方法
String(char[] value)
String(char[] value, int offset, int count)

// 靜態方法
static String copyValueOf(char[] data)
static String copyValueOf(char[] data, int offset, int count)
static String valueOf(char[] data)

// 反向
char[] toCharArray()

3.2 字節數組 ↔ 字符串(編碼關鍵)

String(byte[] bytes)
String(byte[] bytes, int offset, int length)
String(byte[] bytes, String charsetName) // 指定編碼

byte[] getBytes()
byte[] getBytes(String charsetName)

注意:字節與字符轉換時務必顯式指定編碼(如 UTF-8),避免跨平台亂碼。

3.3 基本類型 → 字符串

static String valueOf(int i)
static String valueOf(double d)
// 等價於 i + "" 但語義更清晰

四、 替換操作

String replace(char oldChar, char newChar)
String replace(CharSequence target, CharSequence replacement)

替換所有匹配項,原字符串不變(不可變性),返回新字符串。

五、 分割字符串

String[] split(String regex)

參數為正則表達式,特殊字符需轉義(如 split("\\."))。

六、 子串提取

String substring(int beginIndex)
String substring(int beginIndex, int endIndex)

包含頭不含尾 [begin, end)。索引越界拋出異常。

七、 格式化與比較

7.1 大小寫轉換

String toUpperCase()
String toLowerCase()

7.2 去除首尾空白

String trim()

僅移除首尾空白字符(\u0020 及以下),中間空格保留。

7.3 自然順序比較

int compareTo(String anotherString)

按字典序比較,返回負數/0/正數。基於字符 Unicode 值差值。

完整示例代碼

public class StringMethodDemo {

    // 轉換、去空格、比較
    public static void methodConvertTrimCompare() {
        String s = "    hello Java    ";
        System.out.println("toUpperCase: " + s.toUpperCase()); // 大寫
        System.out.println("toLowerCase: " + s.toLowerCase()); // 小寫
        System.out.println("trim: '" + s.trim() + "'");        // 去首尾空格

        String s1 = "abc", s2 = "aaa";
        System.out.println("compareTo: " + s1.compareTo(s2)); // 1 (b-a)
    }

    // 子串
    public static void methodSubstring() {
        String s = "abcdef";
        System.out.println("substring(2): " + s.substring(2));   // cdef
        System.out.println("substring(2,4): " + s.substring(2,4)); // cd
    }

    // 分割
    public static void methodSplit() {
        String s = "zhangsan,lisi,wangwu";
        for (String name : s.split(",")) {
            System.out.println(name);
        }
    }

    // 替換
    public static void methodReplace() {
        String s = "hello java";
        String s1 = s.replace("java", "world");
        System.out.println("原串: " + s);   // hello java
        System.out.println("新串: " + s1);  // hello world
    }

    // 類型轉換
    public static void methodTransform() {
        char[] arr = {'a','b','c','d','e','f'};
        String s = new String(arr, 1, 3); // bcd
        System.out.println("char[]->String: " + s);

        String s1 = "zxcvbnm";
        char[] chs = s1.toCharArray();
        for (char c : chs) System.out.println("ch=" + c);
    }

    // 判斷
    public static void methodJudge() {
        String str = "ArrayDemo.java";
        System.out.println("startsWith Array: " + str.startsWith("Array"));
        System.out.println("endsWith .java: " + str.endsWith(".java"));
        System.out.println("contains Demo: " + str.contains("Demo"));
    }

    // 獲取
    public static void methodGet() {
        String str = "abcdeakpf";
        System.out.println("length: " + str.length());       // 9
        System.out.println("charAt(4): " + str.charAt(4));   // e
        System.out.println("indexOf('a',3): " + str.indexOf('a',3)); // 5
        System.out.println("lastIndexOf('a'): " + str.lastIndexOf("a")); // 5
    }

    public static void main(String[] args) {
        methodConvertTrimCompare();
        methodSubstring();
        methodSplit();
        methodReplace();
        methodTransform();
        methodJudge();
        methodGet();
    }
}

核心要點回顧

  • 不可變性:所有修改操作均返回新對象,原對象不變。
  • 編碼意識:字節↔字符轉換必須指定 charset。
  • 正則陷阱:split、replaceAll 參數是正則,元字符需轉義。
  • 性能提示:頻繁拼接請用 StringBuilder;單線程首選,多線程用 StringBuffer。

掌握這些 API 並理解其底層原理,能讓你在日常開發中游刃有餘,避免常見坑點。建議收藏備查,實戰中多練習。

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