这篇文章解释了foreach循环直接对应使用迭代器。如果我写一个foreach循环,它会被直接转换成使用迭代器的for循环吗?特别是给定以下循环:
for(Integer i : createList()){
System.out.println(i);
}
无论如何,我是否保证只调用createList()
一次?它被重写为:
for(Iterator<Integer> i = createList().iterator(); i.hasNext(); ) {
System.out.println(i.next());
}
是在某种中间步骤中产生了相同的字节码,还是刚好产生了与上述相同的字节码?