使用每个循环的"高级"在Java中初始化数组

Cor*_*one 21 java foreach for-loop

是否可以使用'advanced'for循环在Java中初始化数组?

例如

    Integer[ ] numbers = new Integer[20];
    int counter = 0;
    for ( Integer i : numbers )
    {
        i = counter++;
    }

    for ( Integer i : numbers )
    {
        System.out.println(i);
    }
Run Code Online (Sandbox Code Playgroud)

这打印所有空值,为什么?

Mar*_*ers 27

不,因为您没有分配给数组,所以您要分配给名为的临时变量i.该阵列没有看到变化.

以下显示使用普通for循环的大致等效代码.这应该可以更容易地了解为什么它无法更新数组:

for (int j = 0; j < numbers.length; j++) { 
    Integer i = arr[j]; // i is null here.
    i = counter++; // Assigns to i. Does not assign to the array.
}
Run Code Online (Sandbox Code Playgroud)