本文正在参加「Java主题月 – Java Debug笔记活动」,详情查看<活动链接>
提问:Java中如何创建二维数组
请看代码
int[][] multD = new int[5][];
multD[0] = new int[10];
复制代码
上面这段代码的结果是创建一个5行10列的二维数组吗?我在网上看到了这段代码,但是无法理解。
回答一
下面这行代码
int[][] multi = new int[5][10];
复制代码
其实是这段代码的缩写
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];
复制代码
注意:每个元素都将会初始化为0,所以也等效下面的代码
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 }
};
复制代码
回答二
我们可以声明二维数组,并在声明的时候将元素直接存储进去:
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];
复制代码
回答三
创建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];
}
复制代码
文章翻译自Stack Overflow:stackoverflow.com/questions/1…
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END