的迭代語句執行後的循環體已經執行。換句話說,當你寫了以下內容:
for (Iterator<E> iter = list.iterator(); iter.hasNext(); element = iter.next()) {
//some code
}
element = iter.next()
將身體已經運行在每次迭代之後運行,所以如果你要打印的元素,例如,第一個元素是任何初始值element
有。
實施例:
List<String> list = new ArrayList<String>();
list.add("a1");
list.add("a2");
list.add("a3");
for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
String string = iterator.next();
System.out.println(string);
}
輸出:
a1
a2
a3
隨着iter.next()
在for
循環:
List<String> list = new ArrayList<String>();
list.add("a1");
list.add("a2");
list.add("a3");
String string = null;
for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); string = iterator.next()) {
System.out.println(string);
}
輸出:
null
a1
a2
P.S:環路爲你申報(for (Iterator<E> iter = list.iterator(); iter.hasNext(); E element = iter.next())
將無法編譯,所以你需要聲明element
因爲這行之前的變量。
這是最大限度地減少局部變量的範圍。 – Puce 2014-12-02 13:17:45
這比以前好,但仍然沒有最小化。在這種情況下,最小範圍是循環的範圍,如果你不需要循環之外的變量。 – Puce 2014-12-02 13:41:41
@Puce我認爲可讀性比範圍界定中的「最佳實踐」規則更重要。看看這個問題,我會說這種方法是最常用的。 http://stackoverflow.com/a/1196612/360211 – weston 2014-12-02 14:05:35