import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] a = new int[5];
for(int i:a) {
a[i] = 7;
}
System.out.println(Arrays.toString(a));
//输出结果是[7, 0, 0, 0, 0]
int[] b = new int[5];
for(int j = 0; j < b.length; j++) {
b[j] = 7;
}
System.out.println(Arrays.toString(b));
//输出结果是[7, 7, 7, 7, 7]
}
}
为什么增强for循环中的 i 不会像普通for循环中的 j 一样自增呢
for(int i:a) {
a[i] = 7;
}
这段代码和下面的是一样的
for(int j = 0; j <= a.length; j++) {
int i = a[j];
a[i] = 7;
}
因为a数组是[0,0,0,0,0];
所以,每次的i都是0;
也就是说,每次修改的都是a[0];
所以只有第一个会改
增强for循环中的 i 指向a数组的每一个元素,并不是for循环的下标
简单说不是一个东西
int等基本数据类型,都有个默认值,除了char是个空字符,int的默认值是0;所以int[] a = new int[5];等价于int[] a = new int {0,0,0,0,0};
增强for循环打印的不是下标,而是值。
foreach仅可用于遍历输出数组,但不能用于修改数组。