整理 Effective Java 書中 Item 63: Beware the performance of string concatenation 心得筆記
主旨
用 + 來拼接字串雖然寫起來很直覺,但如果在迴圈中反覆拼接字串,會造成 效能災難。
字串是 immutable 的,每次用 + 拼接,背後其實都在重新建立新物件。這會讓原本應該是線性時間的操作,變成 O(n²) 的低效實作。
整理 Effective Java 書中 Item 63: Beware the performance of string concatenation 心得筆記
用 + 來拼接字串雖然寫起來很直覺,但如果在迴圈中反覆拼接字串,會造成 效能災難。
字串是 immutable 的,每次用 + 拼接,背後其實都在重新建立新物件。這會讓原本應該是線性時間的操作,變成 O(n²) 的低效實作。
整理 Effective Java 書中 Item 62: Avoid using strings when other types are more appropriate 心得筆記
String 很好用,但也很容易被濫用。因為輸入資料常常是文字格式,很多人會直接用 String 當作萬用資料型別──
但這會造成型別不清、錯誤率高、效能差,也難以維護。
本篇重點就是:不要把 String 當萬用型別。若有更合適的型別,就該使用更合適的型別。
Java 有兩套型別系統:原始型別(primitive)與其對應的物件型別(boxed primitive)。例如:
int ↔ Integerdouble ↔ Doubleboolean ↔ Boolean雖然 autoboxing 看似無縫,但事實上這兩種型別在「效能、null 安全性、== 比較」上都有重大差異。
原則很簡單:如果可以用 primitive,就不要用 boxed。
整理 Effective Java 書中 Item 60: Avoid float and double if exact answers are required 心得筆記
Java 的 float 和 double 是為了高效處理近似值而設計,特別適合科學與工程領域。
但若場景需要精確數值(例如金額計算),它們就會成為麻煩來源,甚至導致錯誤結果。
整理 Effective Java 書中 Item 59: Know and use the libraries 心得筆記
身為 Java 工程師,我們常會遇到「這個功能應該很常見」的需求。這時,不要急著自己寫,先去查 Java 標準函式庫有沒有現成的。
多數情況下,它們不只功能完整,還考慮了邊界條件、效能、可移植性與可讀性,遠遠優於臨時寫出的版本。