for (Season time : Season.values())
system.out.println (time+ "\t" + time.getSpan());
我看到一個使用:
枚舉的例子。這是什麼意思?這個Java語句中的「:」是什麼意思?
for (Season time : Season.values())
system.out.println (time+ "\t" + time.getSpan());
我看到一個使用:
枚舉的例子。這是什麼意思?這個Java語句中的「:」是什麼意思?
這是foreach loop的Java語法。
循環將一次一個遍歷由Season.values()
返回的對象集合中的所有項目,並在執行循環體之前將每個項目依次放入time
變量中。關於foreach循環如何工作的更多細節,請看related question。
它只是對迭代變量從左側陣列上的正好在new for-each loop
它的foreach
Java的版本分開的令牌。
它的
for (int i = 0; i < Season.values().size(); i++) {
Season time = Season.values().get(i);
System.out.println(time + "\t" + time.getSpan());
}
的縮寫版本(具體細節取決於它是什麼,Season.values()將返回,但你的想法)
正如邁克爾指出,而上面的例子是更直觀,是的foreach實際上的這相當於:
Iterator<Season> seasons = Season.iterator();
while (seasons.hasNext()) {
Season time = seasons.next();
System.out.println(time + "\t" + time.getSpan());
}
實際上,它對於基於迭代器的等價物是短暫的(因爲它適用於任何可以迭代的東西)。 – 2010-10-22 03:28:23
@Michael - 好點,爲後代添加的示例 – 2010-10-22 03:32:50
在哪些Universe使用for來對容器執行索引迭代比使用Iterator語義更直觀。對於他們自己,我想.. – dsmith 2010-10-22 03:42:25
哦,我明白了。我習慣於在PHP中看到'as'。 – Strawberry 2010-10-22 03:26:49
@Doug:在PHP中使用'as'。例如:'foreach($ array as $ val)' – codaddict 2010-10-22 03:27:57
@codaddict是的,我做了正確的。你遠在我前面! – Strawberry 2010-10-22 03:28:17