在 Java 中,基元数组如何与每个循环的 new 一起工作?

2022-09-02 01:16:00

我知道每个循环的新内容都适用于迭代和数组,但我不知道在处理数组时幕后发生了什么。

任何人都可以帮我理解这一点吗?提前致谢。

int[] number = new int[10];

for(int i: number) {

}

答案 1

该循环等效于:

for(int j = 0; j < number.length; j++) {
  int i = number[j];
  ...
}

其中 j 是内部生成的引用,与普通用户标识符不冲突。


答案 2

有点晚了,但在这里。

编译器知道您是将 for-each 循环语句用于集合还是数组。

如果用于集合,编译器将使用 将 for-each 循环转换为等效的 for 循环。Iterator

如果用于数组,编译器将使用索引变量将 for-each 循环转换为等效的 for 循环。

这是 oracle.com