的迭代语句执行后的循环体已经执行。换句话说,当你写了以下内容:
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