在 Java 開發中,字串操作是最常見也最容易被忽視的效能瓶頸。由於 String 物件的不可變特性,不當的使用方式會產生大量臨時物件,增加 GC 壓力。本文整理了實戰中最實用的優化策略,助你寫出高效能的字串處理代碼。
直接使用字串字面常量優於 new String(),除非你必須將 char[] 轉換為 String,或對大型 String 呼叫 substring() 時才需顯式建構。
equals() 比 equalsIgnoreCase() 更快;判斷空字串請用 length() == 0(Java 6+ 建議用 isEmpty()),避免 equals("") 的額外開銷。
s = a + b + c)編譯器會自動優化為 StringBuilder,可直接用 +。+ 和 concat()。StringBuilder 非同步,比 StringBuffer 快;建構時指定初始容量可避免擴容複製開銷。對 String 呼叫 toString() 純屬多餘,String 本身就是字串表示。
String.split(regex) 內部每次都會 Pattern.compile(regex),頻繁呼叫極其低效。高頻場景請預編譯 Pattern 並重複使用:
Pattern p = Pattern.compile(regex);
String[] parts = p.split(input);
String 所有「修改」操作(replace、substring、toUpperCase 等)都會產生新物件,舊物件等待 GC。理解這點,自然會避免在循環中濫用這些方法。
掌握這些細節,配合良好的編碼習慣,Java 字串處理效能即可顯著提升。