for循环的正确语法是:
for (Iterator it = ...; it.hasNext(); ){
//...
}
(代码中的前面的声明以及for循环标题中的多余分号都是多余的.)
无论您使用此语法还是while循环都取决于您的口味,二者的含义完全相同. for循环的通用语法为:
for (; ; ) { ; }
等效于:
;
while () { ; ; }
编辑:实际上,如果使用init语句声明变量,则上述两种形式并不完全等效.在这种情况下,迭代器变量的范围将有所不同.对于for循环,在while循环的情况下,作用域仅限于循环本身,但是,作用域扩展到了封闭块的末尾(不足为奇,因为声明位于循环之外).
另外,正如其他人指出的那样,在较新版本的Java中,for循环有一种简写形式:
for (Iterator it = myIterable.iterator(); it.hasNext(); ) {
Foo foo = it.next();
//...
}
可以写成:
for (Foo foo : myIterable) {
//...
}
使用这种形式,您当然会丢失对迭代器的直接引用,这是必需的,例如,如果要在迭代时从集合中删除项目.