原始数组如何在Java中为每个循环使用new?

AS_*_*AS_ 21 java arrays foreach

我知道每个循环的新特性适用于Iterable和数组,但我不知道在使用数组时幕后是什么.

任何人都可以帮我理解这个吗?提前致谢.

int[] number = new int[10];

for(int i: number) {

}
Run Code Online (Sandbox Code Playgroud)

Pat*_*han 16

循环相当于:

for(int j = 0; j < number.length; j++) {
  int i = number[j];
  ...
}
Run Code Online (Sandbox Code Playgroud)

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


DwB*_*DwB 11

有点晚了,但在这里.

编译器知道您是否正在为集合或数组使用for-each循环语句.

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

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

这是oracle.com上的描述


Edw*_*rzo 3

在代码中,您在内存中分配一个包含 10 个整数的数组并获取对其的引用。在 for 循环中,您只需迭代数组中的每个项目,所有项目的初始值均为 0。当您迭代数组元素时,每个项目的值将存储在ifor 循环中声明的变量中。