在JAVA中初始化2d数组

时间:2013-06-23 18:04:06

标签: java

如果我声明一个二维数组,例如:

int[][] numbers = new int[5][];

我认为你必须单独声明/初始化5 int []中的每一个? 例如,在我为数字[0] [1]赋值之前,我不得不说:

numbers[0] = new int[4];

我写了一个小程序并明确地在数字[0] [1]中输入一个值,运行它,并且它在没有初始化数字[0]的情况下工作。 我是否完全不认为必须首先在二维数组中初始化各个数组?

编辑:我的误解是在初始化中。前两个语句没问题,因为我声明goodArray中每个int []的长度为3,这会导致所有这些语句被初始化。在badArray声明中,我只声明了有多少个数组(3),所以我得到了一个npe:

int [][]goodArray = new int[3][3];
goodArray[0][1] = 2;

int[][] badArray = new int[3][];
badArray[0][0] = 2;

3 个答案:

答案 0 :(得分:0)

使用Java中的多维数组,您可以指定位置,无需单独定义它们。

答案 1 :(得分:0)

您可以使用如下示例轻松测试2D阵列的行为:

int[][] numbers1 = new int[][] { {1, 2, 3}, {1, 2, 3, 4, 5}}; /* full initialization */
numbers1 = new int[3][]; /* [3][0] is null by default */
try {
  System.out.println(numbers1[0][0]);
} catch (NullPointerException e) {
  System.out.println(e);
}
numbers1[0] = new int[3]; /* all three ints are initialized to zero by default */
System.out.println(numbers1[0][0]);
numbers1[0] = new int[] {1, 2, 3};
System.out.println(numbers1[0][0]);

将产生以下输出:

java.lang.NullPointerException
0
1

答案 2 :(得分:0)

int [] [] numbers = new int [5] [];

使用上一行,您创建了5个int []一维数组。现在,您需要在使用它们之前说出每个维度数组的大小。 Java提供了这种灵活性,你可以在2D数组中拥有可变大小的一维int []数组。