Java 使用2D数组对每个循环执行

Java 使用2D数组对每个循环执行,java,arrays,foreach,Java,Arrays,Foreach,以下是Java代码片段: int[][] uu = new int[1][1]; uu[0][0] = 5; for(int[] u: uu){ System.out.println(u[0]); } 它打印5张。但是为什么for循环的声明部分声明为int[]u,而不是int[]u 在uu,您引用2D数组。。。 那不是家庭作业。我正在准备Java认证。 Cheers循环正在迭代uu的元素,这些元素是int[]类型的对象。(或者换句话说-u是uu中的一个元素,因此它是一个int[]) 声

以下是Java代码片段:

int[][] uu = new int[1][1];
uu[0][0] = 5;
for(int[] u: uu){
    System.out.println(u[0]);
}
它打印5张。但是为什么for循环的声明部分声明为
int[]u
,而不是
int[]u

在uu,您引用2D数组。。。 那不是家庭作业。我正在准备Java认证。
Cheers

循环正在迭代
uu
的元素,这些元素是
int[]
类型的对象。(或者换句话说-
u
uu
中的一个元素,因此它是一个
int[]

声明始终是迭代检索到的对象的类型,在本例中是
int[]
-

与在
int[]
上迭代相同的是:

 for (int x : myArray) { ...}

因为
x
的每个元素都是
int
类型,这是因为
uu
int[]数组的数组。因此,其中的每一项都是
int[]
。在
for
循环中,您在迭代的数组中声明项的类型。

因为
uu
是数组的
数组。因此,当您迭代它时,您将首先得到一个
数组
,然后您可以迭代该数组以获得单个元素

因此,您的外部循环将
int[]
作为类型,并因此声明。如果您在另一个内部循环中遍历
u
,您将得到类型
int
:-

for (int[] u: uu) {
    for (int elem: u) {
        // Your individual element
    }
}
为什么for循环的声明部分声明为int[]u,而不是int[]u

数组是二维的,因此您需要处理双层迭代。在另一个数组中有一个数组,其原理与
List
的工作原理相同

<>要遍历所有元素,应该考虑行元素结构。有必要从容器中获取每一行,然后从每一行获取每个元素

for(int[]u:uu)
只是每个迭代行的一个值,其原理与
for(int row=0;rowu
或分别
container[row]
不是元素本身,而是元素的行(数组)。这意味着您需要第二个迭代层来获取元素:

int[][] container = new int[10][10];
//... - Fill elements.
for(int row = 0; row < container.length; row++){
  for(int element = 0; element < container[row].length; element++){
    System.out.printf("Row: %d Element: %d Value: %d\n", row, element, container[row][element]);
  }
}
int[]container=newint[10][10];
//... - 填充元素。
for(int row=0;row
只是一个愚蠢的建议:-它不是Java中的
2-D数组。它是一个数组的
数组
。它是以数组中的数组的方式实现的,但在书中称为2D数组。@uml。。可能是,但仍然是数组的
数组
是一个更好的名称。你将来会知道的。:)@uml我知道很多书把它叫做2D数组,如果我在Java程序中需要一个2D数组,我会把它映射到这个结构,但它实际上是一个数组数组,这样想会更好。例如,如果您将For循环视为在数组上迭代,而数组的每个元素都是int[],那么您的问题的答案就变得显而易见了。