增強功能的 for 迴圈

在 JavaScript 中,針對 for 迴圈有特殊的語法處理,使得我們可以巡迴物件中的所有變數和函式。例如我們自己建立一個物件 obj,並且設定它的欄位 name 為 John,欄位 age 為 20,那麼使用底下程式碼,我們便能將 obj 中的所有變數 (事實上還包括函式) 找出來,並且顯示在彈出式視窗中:

在 Java 中,和 C++ 相同的是,我們必須要知道陣列的長度,或是使用迭代器取得「是否有下一位」的資訊,才能尋訪所有陣列或容器中的元素。例如:

在 Java 1.5 中,針對 for 迴圈作了一些加強,讓我們無需知道陣列或容器的長度,甚至也不用迭代器,便可以將其中的元素一一取出。使用的語法是 for (Type varName : listName),即可將 listName 中的元素依順序由型別為 Type 的變數 varName 存取,當然陣列或容器中元素的型別必須是可以轉型為 Type 的物件。底下例子包含 Generic Types 及 Autoboxing 特性:

輸出結果:
0-100-200-300-400-500-

陣列及基本型別

底下是一個使用陣列及基本型別的例子:

Map

底下是一個尋訪所有 value 的 for 迴圈。當然,因為用 HashMap,所以並沒有什麼順序:

輸出結果:
Number:2
Number:4
Number:1
Number:3
Number:5
Number:0

必須注意的是,只有陣列和實作了 java.util.Iterable 介面的類別可以使用這種方式去尋訪。