看起来奇怪为什么整数数组再次重置为默认值。
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
}
答案 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
)...