| 構造器 | 說明 | 示例 |
|---|---|---|
String(byte[]) | 字節數組解碼(平台默認編碼) | new String(new byte[]{97,98}) // "ab" |
String(byte[], offset, len) | 部分字節數組解碼 | new String(bytes, 3, 2) |
String(char[]) | 字符數組構造 | new String(new char[]{'a','b'}) |
String(String) | 複製字符串(極少必要) | new String("abc") |
String(StringBuffer) | StringBuffer 轉 String | new String(new StringBuffer("abc")) |
charAt(int index):單字符訪問;indexOf(int ch / String str [, fromIndex]):首次出現位置;lastIndexOf(...):最後出現位置;startsWith/endsWith(String prefix/suffix [, offset]):前綴/後綴判斷;equals(Object) / equalsIgnoreCase(String):內容比較;compareTo(String) / compareToIgnoreCase(String):字典序比較。substring(int begin [, end]):子串(end 不包含);split(String regex [, limit]):正則分割,返回數組;trim():去首尾空白;strip() (Java 11+) 支援 Unicode 空白。toUpperCase() / toLowerCase():區分 Locale 的重載可用;replace(char old, char new) / replace(CharSequence, CharSequence):字面替換;replaceAll/replaceFirst(String regex, String repl):正則替換。toCharArray():轉字符數組;getBytes(Charset):編碼為字節數組(建議顯式指定 Charset);isEmpty() / length():長度判斷;contains(CharSequence):包含判斷。valueOf(基本類型/Object/char[]):通用轉字符串,null → "null";copyValueOf(char[]):同 valueOf;format(String, Object...):格式化,底層 Formatter。StringBuilder(單線程)或 StringBuffer(多線程),避免 + 產生大量中間對象;intern() 手動入池(慎用,Java 7+ 池在堆中,影響 GC);Pattern.compile(regex) 復用,split 內部會編譯,高頻調用提取 Pattern;getBytes(StandardCharsets.UTF_8),避免平台差異導致亂碼;s1 == s2 vs s1.equals(s2):前者比較引用,後者比較內容;substring 在 Java 6 共享底層 char[](可能內存洩漏),Java 7+ 複製新數組;"a" + "b" == "ab" 編譯期常量折疊為 true,變量拼接則 false;String s = new String("abc") 創建 1 或 2 個對象?字面量 "abc" 在常量池,new 在堆創建新對象 → 2 個(若常量池已有則 1 個堆對象)。