Java 使用foreach循环更改二维数组中的值
我在Java中遇到了一个有趣的quark 此代码段将按预期执行(将数组中的所有值更改为0): 但是,这不会:Java 使用foreach循环更改二维数组中的值,java,multidimensional-array,foreach,Java,Multidimensional Array,Foreach,我在Java中遇到了一个有趣的quark 此代码段将按预期执行(将数组中的所有值更改为0): 但是,这不会: int[][] test = {{4, 2, 6}, { 7, 4, 10 }, { 3, 4, 1 } }; for (int[] current : test) { for (int num : current) { num = 0; } } 感谢您的帮助。提前谢谢 编辑: 为了澄清,我理解为什么第二个代码段不起作用。我想知道为什么第一部分有效。谢谢
int[][] test = {{4, 2, 6}, { 7, 4, 10 }, { 3, 4, 1 } };
for (int[] current : test) {
for (int num : current) {
num = 0;
}
}
感谢您的帮助。提前谢谢
编辑:
为了澄清,我理解为什么第二个代码段不起作用。我想知道为什么第一部分有效。谢谢我不是在寻找“这将起作用”的回答,我想知道第一段与第二段的区别。您只是在更改一个
局部变量。它不会影响正在遍历的数组
for each
循环只是一个合成糖for循环,使用迭代器您只需更改为局部变量。它不会影响正在遍历的数组
for each
循环只是一个带有迭代器的合成糖for循环
这将起作用:
int[][] test = {{4, 2, 6}, { 7, 4, 10 }, { 3, 4, 1 } };
for (int[] current : test)
for (int i = 0; i < current.length; i++)
current[i] = 0;
int[]test={{4,2,6},{7,4,10},{3,4,1};
对于(int[]当前:测试)
对于(int i=0;i
这将起作用:
int[][] test = {{4, 2, 6}, { 7, 4, 10 }, { 3, 4, 1 } };
for (int[] current : test)
for (int i = 0; i < current.length; i++)
current[i] = 0;
int[]test={{4,2,6},{7,4,10},{3,4,1};
对于(int[]当前:测试)
对于(int i=0;i
有一个库方法可以为一维数组设置相同的值。使用它,这样你的代码将是干净和快速的
int[][] test = {{4, 2, 6}, { 7, 4, 10 }, { 3, 4, 1 } };
for (int[] current : test)
Arrays.fill(current, 0);
有一个库方法可以为一维数组设置相同的值。使用它,这样你的代码将是干净和快速的
int[][] test = {{4, 2, 6}, { 7, 4, 10 }, { 3, 4, 1 } };
for (int[] current : test)
Arrays.fill(current, 0);
谢谢,但是为什么第一个代码段可以工作呢?因为你明确地使用了数组。二维数组是一维数组的一维数组。非常感谢!我现在明白了。谢谢,但是为什么第一个代码段可以工作呢?因为你明确地使用了数组。二维数组是一维数组的一维数组。非常感谢!我现在明白了。非常详细的解释。@PM77-1谢谢您,先生!非常详细的解释。@PM77-1谢谢您,先生!
int[][] test1 = {{4, 2, 6}, { 7, 4, 10 }, { 3, 4, 1 } };
for (int[] current : test1) {
for (int num : current) {
System.out.println(num);
num = 0;
}
}