簡體   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