Effective Java Item 63:小心字串串接的效能陷阱

整理 Effective Java 書中 Item 63: Beware the performance of string concatenation 心得筆記

主旨

+ 來拼接字串雖然寫起來很直覺,但如果在迴圈中反覆拼接字串,會造成 效能災難

字串是 immutable 的,每次用 + 拼接,背後其實都在重新建立新物件。這會讓原本應該是線性時間的操作,變成 O(n²) 的低效實作。

Read more

Effective Java Item 62:避免使用strings,因為其他類型更適合

整理 Effective Java 書中 Item 62: Avoid using strings when other types are more appropriate 心得筆記

主旨

String 很好用,但也很容易被濫用。因為輸入資料常常是文字格式,很多人會直接用 String 當作萬用資料型別──
但這會造成型別不清、錯誤率高、效能差,也難以維護。

本篇重點就是:不要把 String 當萬用型別。若有更合適的型別,就該使用更合適的型別。

Read more

Effective Java Item 61:能用原始型別就不要用 boxed primitives

主旨

Java 有兩套型別系統:原始型別(primitive)與其對應的物件型別(boxed primitive)。例如:

  • intInteger
  • doubleDouble
  • booleanBoolean

雖然 autoboxing 看似無縫,但事實上這兩種型別在「效能、null 安全性、== 比較」上都有重大差異。
原則很簡單:如果可以用 primitive,就不要用 boxed。

Read more

Effective Java Item 60:需要精確結果時避免使用 float 和 double

整理 Effective Java 書中 Item 60: Avoid float and double if exact answers are required 心得筆記

主旨

Java 的 floatdouble 是為了高效處理近似值而設計,特別適合科學與工程領域。
但若場景需要精確數值(例如金額計算),它們就會成為麻煩來源,甚至導致錯誤結果。

Read more

Effective Java Item 59:善用標準函式庫,別自己重造輪子

整理 Effective Java 書中 Item 59: Know and use the libraries 心得筆記

主旨

身為 Java 工程師,我們常會遇到「這個功能應該很常見」的需求。這時,不要急著自己寫,先去查 Java 標準函式庫有沒有現成的。
多數情況下,它們不只功能完整,還考慮了邊界條件、效能、可移植性與可讀性,遠遠優於臨時寫出的版本。

Read more