public class Test {
public static void main(String[] args) {
int[] arr= new int[5];
for (int a : arr) {
a=1;
}
System.out.println(Arrays.toString(arr));
}
}
[0, 0, 0, 0, 0]
可以看出,使用foreach方法没办法给数组赋值。
实际上,foreach语句
for (int a : arr) {
a=1;
}
相当于:
for(int i=0;i<arr.length;i++) {
int a=arr[i];
a=1;
}
使用foreach时,是赋值给了一个临时变量,采用值传递,临时变量的改变并不会改变arr[i]本身,与如下代码的原理相同:
int a = 1;
int b = a;
b = 2;
System.out.println(a); //a不会随着b改变
因此,以后在使用foreach时要注意:foreach仅可用于遍历输出数组,但不能用于修改数组。