Syntax for creating a two-dimensional array
考虑:
1 2 | int[][] multD = new int[5][]; multD[0] = new int[10]; |
这是如何创建一个具有5行10列的二维数组吗?
我在网上看到了这段代码,但语法不通。
请尝试以下操作:
1 | int[][] multi = new int[5][10]; |
…这是一个很短的手像这样的东西:
1 2 3 4 5 6 | int[][] multi = new int[5][]; multi[0] = new int[10]; multi[1] = new int[10]; multi[2] = new int[10]; multi[3] = new int[10]; multi[4] = new int[10]; |
请注意,每个元素都将初始化为
1 2 3 4 5 6 7 | int[][] multi = new int[][]{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; |
我们可以声明二维数组,并在声明时直接将元素存储为:
1 | int marks[][]={{50,60,55,67,70},{62,65,70,70,81},{72,66,77,80,69}}; |
这里int表示存储在数组中的整型元素,数组名为"marks"。int是在""和""大括号内表示的所有元素的数据类型,因为数组是具有相同数据类型的元素集合。
回到上面写的语句:每一行元素都应该写在大括号内。每行中的行和元素应该用逗号分隔。
现在观察语句:您可以得到3行5列,因此JVM创建3*5=15个内存块。这些块可以单独称为TA:
1 2 3 | marks[0][0] marks[0][1] marks[0][2] marks[0][3] marks[0][4] marks[1][0] marks[1][1] marks[1][2] marks[1][3] marks[1][4] marks[2][0] marks[2][1] marks[2][2] marks[2][3] marks[2][4] |
注:如果要存储n个元素,则数组索引从零开始,到n-1结束。创建二维数组的另一种方法是先声明数组,然后使用new运算符为其分配内存。
1 2 | int marks[][]; // declare marks array marks = new int[3][5]; // allocate memory for storing 15 elements |
通过将上述两种方法结合起来,我们可以编写:
1 | int marks[][] = new int[3][5]; |
您可以按照其他人提到的方式创建它们。还有一点需要补充:您甚至可以用每行创建一个倾斜的二维数组,不一定具有相同的列数,如下所示:
1 2 3 4 | int array[][] = new int[3][]; array[0] = new int[3]; array[1] = new int[2]; array[2] = new int[5]; |
创建具有5行10列的二维数组最常见的习惯用法是:
1 | int[][] multD = new int[5][10]; |
或者,您可以使用以下内容,这更类似于您所拥有的内容,尽管您需要显式初始化每一行:
1 2 3 4 | int[][] multD = new int[5][]; for (int i = 0; i < 5; i++) { multD[i] = new int[10]; } |
也可以按以下方式声明。设计不好,但能用。
1 | int[] twoDimIntArray[] = new int[5][10]; |
尝试:
1 | int[][] multD = new int[5][10]; |
注意,在代码中,只有二维数组的第一行初始化为0。第2行到第5行甚至不存在。如果你试着打印它们,你会得到每个人的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | int [][] twoDim = new int [5][5]; int a = (twoDim.length);//5 int b = (twoDim[0].length);//5 for(int i = 0; i < a; i++){ // 1 2 3 4 5 for(int j = 0; j <b; j++) { // 1 2 3 4 5 int x = (i+1)*(j+1); twoDim[i][j] = x; if (x<10) { System.out.print("" + x +""); } else { System.out.print(x +""); } }//end of for J System.out.println(); }//end of for i |
在Java中,二维数组可以被声明为一维数组。在一维数组中,您可以像
1 | int array[] = new int[5]; |
其中int是数据类型,array[]是数组声明,
像这样,您可以编写一个二维数组,如下所示。
1 2 | int array[][]; array = new int[3][4]; |
这里,
在您的代码中
1 2 | int[][] multD = new int[5][]; multD[0] = new int[10]; |
这意味着您已经创建了一个具有五行的二维数组。在第一行有10列。在爪哇中,可以根据需要选择每一行的列大小。
1 2 3 4 5 6 7 8 9 10 11 12 13 | int rows = 5; int cols = 10; int[] multD = new int[rows * cols]; for (int r = 0; r < rows; r++) { for (int c = 0; c < cols; c++) { int index = r * cols + c; multD[index] = index * 2; } } |
享受!
这些类型的数组在Java中被称为锯齿数组。
1 2 3 4 | int[][] multD = new int[3][]; multD[0] = new int[3]; multD[1] = new int[2]; multD[2] = new int[5]; |
在这个场景中,数组的每一行包含不同数量的列。在上面的示例中,第一行包含三列,第二行包含两列,第三行包含五列。您可以在编译时初始化此数组,如下所示:
1 | int[][] multD = {{2, 4, 1}, {6, 8}, {7, 3, 6, 5, 1}}; |
您可以轻松地迭代数组中的所有元素:
1 2 3 4 5 6 |
尝试这种方式:
1 2 3 | int a[][] = {{1,2}, {3,4}}; int b[] = {1, 2, 3, 4}; |