jvm如何实现foreach?

时间:2019-07-15 09:00:32

标签: java

我知道foreach循环是Java的“语法糖”,但这是实现方法,为什么?

for (Object s : list)
{
    System.out.println(s.hashCode());
}

等于:

Object s;
Iterator<Object> iterator = list.iterator();
while(iterator.hasNext())
{
    s = iterator.next();
    System.out.println(s);
}

Iterator<Object> iterator = list.iterator();
while(iterator.hasNext())
{
    Object s = iterator.next();
    System.out.println(s);
}

是在循环内还是循环外定义了局部变量“ Object s”?

我尝试将s定义为final,并且没有错误,因此我认为在循环内定义了“ s”。 但是,在每个循环中分配局部变量时,会不会花费更多的堆栈空间?

0 个答案:

没有答案