[英]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.