整理 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²) 的低效實作。
Java 有兩套型別系統:原始型別(primitive)與其對應的物件型別(boxed primitive)。例如:
int ↔ Integerdouble ↔ Doubleboolean ↔ Boolean雖然 autoboxing 看似無縫,但事實上這兩種型別在「效能、null 安全性、== 比較」上都有重大差異。
原則很簡單:如果可以用 primitive,就不要用 boxed。
整理 Effective Java 書中 Item 53: Use varargs judiciously 心得筆記
Java 中的 varargs(variable arity arguments,可變參數)允許在方法中接受 不定數量的參數。這在設計彈性 API、像是 printf() 或是工具類別時非常好用。但 varargs 是把雙面刃,用錯了可能導致 執行時錯誤 或 隱性效能問題。這篇將帶你學會:什麼時候該用 varargs,什麼時候該避免,怎麼用才安全又優雅。
整理 Effective Java 書中 Item 25:Limit source files to a single top-level class 心得筆記
Java 技術上允許你在一個 .java 檔案中定義多個 top-level 類別(也就是非巢狀的 public 或 package-private 類別),但這麼做其實是一個踩雷設計。這會讓你的程式行為變得難以預測,尤其當你在不同檔案中定義了相同名稱的類別,編譯結果會依照檔案的編譯順序而不同,產生極大的風險。
整理 Effective Java 書中 Item 24: Prefer static member classes to non-static member classes 心得筆記
在 Java 中,巢狀類別(Nested Class)是一種將類別定義在另一個類別內部的設計方式。根據是否需要外部類別的實例,有四種巢狀類別:static member class、non-static member class、local class 和 anonymous class。本篇聚焦在:當巢狀類別不需要外部類別實例時,應優先使用 static member class,這樣可以節省記憶體、提升效能、避免記憶體洩漏,也對設計更有彈性。