使用foreach推送值后,java整数数组重置为默认值

时间:2015-06-21 14:25:07

标签: java arrays

看起来奇怪为什么整数数组再次重置为默认值。

int[] y = new int[5];
int z = 0;

for(int j : y) {
    j = z++;
    System.out.print(j); //0 1 2 3 4
}

for(int j : y) {
    System.out.print(j); //0 0 0 0 0
}

5 个答案:

答案 0 :(得分:3)

Java是按值传递的。因此,当您更改包含数组元素值的局部变量j时,元素不会更改,只会更改局部变量。

要更改数组元素,您需要执行以下操作:

for (int j = 0; j < y.length; j++) {
    y[j] = z++;
    System.out.print(y[j]); // 0 1 2 3 4
}

答案 1 :(得分:1)

j 将在循环中具有y [k]的,但写入它将不会写入数组。

如果要修改数组,请使用普通for循环:

for(int i = 0; i < y.length; i++) {
    y[i] = z++;
    System.out.print(y[i]); //0 1 2 3 4
} 

答案 2 :(得分:1)

您正在为j分配值,其中包含从数组复制的值,而不是引用。

您需要的是:

for (int i=0; i<y.length; i++) {
    y[i] = z++;
    System.out.println(y[i]);
}

答案 3 :(得分:1)

您没有将值分配给您将其分配给临时变量j的整数数组。尝试下面它将打印更新的值

int[] y = new int[5];
int z = 0;

for(int j =0 ;j< y.length ;j++) {
    y[j] = z++;
    System.out.print(y[j]); //0 1 2 3 4
}

for(int j : y) {
    System.out.print(j); //0 1 2 3 4
}

答案 4 :(得分:0)

在第一个for循环中,您正在打印的变量j中的值不是来自数组的值,因为您分配了一个新值(来自z })打印之前(j)...