考虑:
int[][] multD = new int[5][];
multD[0] = new int[10];
这就是创建5行10列的二维数组的方法吗?
我在网上看到了这段代码,但语法没有意义。
考虑:
int[][] multD = new int[5][];
multD[0] = new int[10];
这就是创建5行10列的二维数组的方法吗?
我在网上看到了这段代码,但语法没有意义。
当前回答
实际上,Java并没有数学意义上的多维数组。Java所拥有的只是数组的数组,每个元素也是数组的数组。这就是为什么初始化它的绝对要求是第一个维度的大小。如果指定了其余参数,则它将创建一个填充默认值的数组。
int[][] ar = new int[2][];
int[][][] ar = new int[2][][];
int[][] ar = new int[2][2]; // 2x2 array with zeros
这也给了我们一个怪癖。子数组的大小不能通过添加更多元素来改变,但是我们可以通过分配任意大小的新数组来做到这一点。
int[][] ar = new int[2][2];
ar[1][3] = 10; // index out of bound
ar[1] = new int[] {1,2,3,4,5,6}; // works
其他回答
创建5行10列的二维数组最常见的习惯用法是:
int[][] multD = new int[5][10];
或者,你也可以使用下面的代码,它更类似于你所拥有的,尽管你需要显式地初始化每一行:
int[][] multD = new int[5][];
for (int i = 0; i < 5; i++) {
multD[i] = new int[10];
}
我们可以声明一个二维数组,并在声明时直接将元素存储为:
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个内存块。这些块可以分别称为:
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个元素,则数组下标从0开始,到n-1结束。 创建二维数组的另一种方法是先声明数组,然后使用new操作符为它分配内存。
int marks[][]; // declare marks array
marks = new int[3][5]; // allocate memory for storing 15 elements
将上述两者结合起来,我们可以得到:
int marks[][] = new int[3][5];
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;
}
}
享受吧!
试试这个方法:
int a[][] = {{1,2}, {3,4}};
int b[] = {1, 2, 3, 4};
也可以用以下方式声明它。这不是什么好设计,但很管用。
int[] twoDimIntArray[] = new int[5][10];