如果我声明一个二维数组,例如:
int[][] numbers = new int[5][];
我认为您必须单独声明/初始化 5 个 int[] 中的每一个?例如,在我为 numbers[0][1] 赋值之前,我不得不说:
numbers[0] = new int[4];
我写了一个小程序,并在 numbers[0][1] 中显式地输入了一个值,然后运行它,它在没有先初始化 numbers[0] 的情况下工作。我完全不认为必须首先在二维数组中初始化各个数组吗?
编辑:我的误解是在初始化。第一个 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;