【问题标题】:For Each Loop Editing Original 2D Array对于每个循环编辑原始二维阵列
【发布时间】:2016-04-01 03:03:25
【问题描述】:

在 for each 循环中,输出为 6。但是,我认为输出为 0,因为至少对于一维数组,for each 循环仅遍历数组。如果“f”只是循环中的局部变量,“g”如何被编辑?

int[][] g = new int[7][7];

for(int[] f : g) {
    for(int h = 0; h < f.length; h++)
        f[h] = 6;
}

System.out.println(g[4][6]);

【问题讨论】:

  • int[] 是引用类型,因此您的 int[][] 具有引用类型的元素。因此您可以修改该值。

标签: java arrays foreach


【解决方案1】:

即使 Java 是 pass-by-value,如果您传递的值是对可变数据类型的引用,它们也可以被变异。

如您所知,f 是您在增强型 for 循环中迭代的值,但它表示包含在您的二维数组 g 中的每个元素。

在这种情况下,您的int[] 是可变的。您正在将二维数组中的值完全编辑为另一个值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-03
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 2014-06-17
    • 2013-11-22
    相关资源
    最近更新 更多