Java中如何创建二维数组?| Java Debug 笔记

本文正在参加「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
喜欢就支持一下吧
点赞0 分享