代碼對比
// 方式一:直接遍歷
for (Apple apple : plate.getApples()) { ... }
// 方式二:先賦值
List<Apple> list = plate.getApples();
for (Apple apple : list) { ... }
結論
**完全等價,無任何效率差異。**
- `plate.getApples()` 返回的是 List 引用,不會複製列表。
- 方式二的 `list` 只是多持有一個引用變量,編譯後字節碼幾乎相同。
- JIT 編譯器會內聯優化,運行時零開銷。
風格建議
- 若需多次使用列表(如先判斷 `size()` 再遍歷),用變量存儲提高可讀性。
- 單次遍歷直接寫在 for-each 更簡潔。