整理 String 與 StringBuffer 共通與各自關鍵方法,掌握兩者溝通方式。表格僅含討論相關核心方法,被覆寫方法以單行摘要。
| 方法 | 參數/覆寫 | 用途 |
|---|---|---|
| 建構子 | 已覆寫:預設、String、StringBuffer、char[]、byte[] | 建立 String 物件 |
| length() | 無 | 字元數量 |
| charAt() | int index | 指定位置字元 |
| getChars()/getBytes() | 起始/結束索引、目標陣列、目標索引 | 複製 char 或 byte 到外部陣列 |
| toCharArray() | 無 | 產生含內部字元的 char[] |
| equals()/equalsIgnoreCase() | 比較用 String | 內容等價檢查 |
| compareTo() | 比較用 String | 字典序比較,回傳負/零/正值(大小寫不等價) |
| regionMatches() | 雙方偏移量、長度;覆寫可忽略大小寫 | 區域是否相同 |
| startsWith() | 前綴字串;覆寫含偏移量 | 是否以該字串開頭 |
| endsWith() | 後綴字串 | 是否為後綴 |
| indexOf()/lastIndexOf() | 已覆寫:char、char+索引、String、String+索引 | 搜尋字元/字串位置,找不到回傳 -1 |
| substring() | 覆寫:起始索引、起始+結束索引 | 回傳指定子集的新 String |
| concat() | 欲連接字串 | 回傳連接後的新 String |
| replace() | 舊字元、新字元 | 回傳替換後的新 String |
| toLowerCase()/toUpperCase() | 無 | 統一大小寫,無變化則回傳原物件 |
| trim() | 無 | 移除首尾空白,無變化則回傳原物件 |
| valueOf() | 已覆寫:Object、char[]、char[]+偏移+計數、基本型別 | 回傳參數的字串表現 |
| intern() | 無 | 每個唯一字元序列產生唯一 String 參考 |
關鍵特性:需修改內容時,每個方法皆回傳新 String 物件;無需修改時回傳原參考,節省空間與開銷。
| 方法 | 參數/覆寫 | 用途 |
|---|---|---|
| 建構子 | 已覆寫:預設、緩衝區長度、依 String 建立 | 建立 StringBuffer 物件 |
| toString() | 無 | 依 StringBuffer 建立 String |
| length() | 無 | 字元數量 |
| capacity() | 無 | 目前配置空間大小 |
| ensureCapacity() | 期望容量 int | 確保至少期望空間 |
| setLength() | 新長度 int | 縮短或擴充(以 null 填充) |
| charAt()/setCharAt() | 索引、(索引、新字元) | 讀取/修改指定位置字元 |
| getChars() | 起始/結束、目標陣列、目標索引 | 複製 char 到外部陣列(無 getBytes) |
| append() | 已覆寫:Object、String、char[]、基本型別 | 將參數轉字串追加至末尾,必要時擴容 |
| insert() | 已覆寫:位置索引 + Object/String/基本型別 | 在指定位置插入字串,必要時擴容 |
| reverse() | 無 | 反轉緩衝區字元順序 |
最常用:append()。編譯器處理 +/+= 字串運算時內部即使用此法。insert() 形式類似。兩者皆能直接操作緩衝區,避免產生中間物件。