【问题标题】:for each loop incremementforeach 循环增量
【发布时间】:2014-12-14 13:25:54
【问题描述】:

我只是试图理解为什么这两个循环不一样。

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

或者换句话说,为什么秒不增加?

【问题讨论】:

  • 添加语言标签。
  • 你在使用 Java 吗?

标签: java for-loop foreach post-increment


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    因为在数组 [j] 中,您正在修改数组引用下数组中的值。 int i 不引用数组中的值。 int 是原始数据类型。它只是复制到本地变量 i 的 int 值。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-26
        • 2019-04-28
        • 1970-01-01
        • 2014-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多