Java 对于每个循环增量

Java 对于每个循环增量,java,for-loop,foreach,post-increment,Java,For Loop,Foreach,Post Increment,我只是想理解为什么这两个循环做的不一样 int[] array = new int[10]; for (int j = 0; j < array.length; j++) { array[j]++; } for(int i: array){ i++; } 或者换句话说,为什么第二个不增加?在第二种情况下,您不指定值。值丢失了。第一种情况下的大括号负责赋值。在第二个版本中,您只获取值,而不分配它。但是,在这种情况下,它也会增加。因为在数组[j]中,您

我只是想理解为什么这两个循环做的不一样

int[] array = new int[10];
for (int j = 0; j < array.length; j++) {
        array[j]++;
    }
for(int i: array){
        i++;
}

或者换句话说,为什么第二个不增加?

在第二种情况下,您不指定值。值丢失了。第一种情况下的大括号负责赋值。在第二个版本中,您只获取值,而不分配它。但是,在这种情况下,它也会增加。

因为在数组[j]中,您正在修改数组引用下的数组中的值。int i不是数组中的值的引用。int是基本数据类型。只有int值被复制到局部变量i。

array[j]++意味着将存储在array[j]中的值增加1,因此第一个循环将数组中的所有值增加1。第二个循环是一个for each循环,相当于:

for(Iterator<Integer> iterator = iterator.iterator(); iterator.hasNext(); ) {
    Integer i = iterator.next();
    i++;
}

正如您所见,我们从不更改数组引用的值,只更改for each循环引用的局部变量。

添加语言标记。您使用Java吗?