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

Java String 類核心方法大全:獲取、判斷、轉換、替換、分割、子串、比較一網打盡

     編輯:Java 綜合教學

String 不可變性

String 為 final 類,底層 char[] value(JDK 9+ 為 byte[] + coder),任何修改操作都會返回新對象,原對象不變。

七大類核心方法分類速查

類別代表方法說明
獲取length()字符數(非字節數)
charAt(int index)指定位置字符,越界拋 StringIndexOutOfBoundsException
indexOf(int ch/Str, fromIndex)正向查找首次出現位置,無則 -1
lastIndexOf(...)反向查找最後一次位置
substring(begin, end)左閉右開 [begin, end),end 可省略至末尾
判斷contains(CharSequence)是否包含子串
isEmpty()length()==0(JDK 6+)
startsWith/endsWith前綴/後綴匹配
equals/equalsIgnoreCase內容比較,切勿用 ==
轉換toCharArray()字符數組副本
getBytes(charset)編碼為字節數組,指定字符集避免亂碼
valueOf(type)靜態工廠,基本類型/物件 → String,null 安全
new String(byte[], charset)解碼構造器
替換replace(old, new)字符/字符串替換,全部替換,支持正則用 replaceAll
分割split(regex, limit)正則分割,limit>0 限制結果長度,limit<0 保留尾部空串
大小寫/去空白/比較toUpperCase()/toLowerCase()區域相關,可傳 Locale
trim()去除首尾空白字符(≤U+0020),JDK 11+ 有 strip() 支援 Unicode 空白
compareTo(another)字典序比較,返回首個不同字符的碼位差值

常見陷阱與最佳實踐

  • 字符串拼接:循環內用 StringBuilder,避免產生大量中間對象。
  • substring 記憶體洩漏(JDK 7 前):共享底層數組,長字串取小段導致大數組無法 GC。JDK 7+ 已複製數組,無此問題。
  • equals vs ==:== 比較引用,equals 比較內容。常量池機制導致 "a" == "a" 為 true,但 new String("a") == "a" 為 false。
  • split 正則轉義:"a|b".split("|") → 全切開,需 split("\\|")。
  • 格式化:String.format("%,.2f", 1234.567) → "1,234.57"。

代碼演示片段

String s = "abcdefakbf";
s.length();           // 10
s.charAt(4);          // 'e'
s.indexOf('a');       // 0
s.indexOf('a', 3);    // 5
s.lastIndexOf("a");   // 7
s.substring(2);       // "cdefakbf"
s.substring(2, 5);    // "cde"
s.contains("def");    // true
s.replace('a', 'X');  // "XbcdefXkbf"
s.split("f");         // ["abcde", "akb", ""]
s.toUpperCase();      // "ABCDEFAKBF"
"  hi  ".trim();      // "hi"
"abc".compareTo("abd"); // -1 ('c' - 'd')

總結

掌握 String 高頻 API,關鍵在於理解不可變性、編碼/解碼、正則分割與比較語義。實戰中善用 StringBuilder、StringJoiner(JDK 8+)提升效能,警惕 substring 與常量池陷阱。

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