繁体   English   中英

在JAVA中初始化2D数组

[英]initializing a 2d array in JAVA

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

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

我以为您必须分别声明/初始化5个int []? 例如,在为数字[0] [1]分配值之前,我必须说:

numbers[0] = new int[4];

我编写了一个小程序,将一个值显式地放入了numbers [0] [1]中,然后运行它,并且它无需先初始化numbers [0]就可以正常工作。 我是否完全不认为必须先在2d数组中初始化各个数组?

编辑:我的误解是在初始化。 第1条2条语句是可以的,因为我声明了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;

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

您可以使用以下示例轻松地测试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

int [] []个数字=新的int [5] [];

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM