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

Java 字串完整指南:建立、常見陷阱、核心方法與實戰練習

     編輯:Java 程式設計入門

字串物件建立與字串池機制

Java 使用字串池管理字面常量。首次使用字面值時放入池中,後續相同字面值直接引用池中物件,不被 GC 回收。使用 new String() 則在堆上建立新物件,不指向池中,可用 intern() 手動放入池中。

String str1 = "abc";
String str2 = "abc";
String str3 = new String("abc");
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false

常見建立物件數量陷阱

  • String s = new String("abc"); → 2 個(池中 "abc" + 堆上新物件)
  • String s = "ab" + "cd"; → 1 個(編譯期常量折疊為 "abcd" 進池)
  • 變數拼接 str1 + str2 → 產生新物件不進池,除非皆為 final static 常量且編譯期可解析。
final static String STR1 = "ab";
final static String STR2 = "cd";
String s3 = "ab" + "cd";      // 池中 "abcd"
String s4 = STR1 + STR2;      // 編譯期常量折疊,指向池中 "abcd" → true
String s5 = STR1 + "cd";      // 同上 → true

// 若非即時賦值(如在 static 區塊賦值),則視為變數,拼接結果不進池 → false

核心 API 分類速查

分類代表方法
獲取length(), charAt(), indexOf(), lastIndexOf()
判斷contains(), startsWith(), endsWith(), isEmpty(), equals(), equalsIgnoreCase()
轉換toCharArray(), getBytes(), valueOf(), copyValueOf(), String(char[])
修改replace(), split(), substring(), toUpperCase(), toLowerCase(), trim()
比較compareTo()(自然順序)

實戰練習

1. 字串反轉

public static void reverse(String str) {
    for (int i = str.length(); i > 0; i--) {
        System.out.print(str.charAt(i - 1));
    }
}

2. 最大公共子串(暴力法)

public static String maxCommonSubstring(String s1, String s2) {
    String result = null;
    outer:
    for (int len = s1.length(); len > 0; len--) {
        for (int i = 0; i <= s1.length() - len; i++) {
            String sub = s1.substring(i, i + len);
            if (s2.contains(sub)) {
                result = sub;
                break outer;
            }
        }
    }
    return result;
}

此演示採用遞減長度遍歷,效率較低;實務上可用後綴樹或動態規劃優化。

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