5.2.3 不規(guī)則數(shù)組
像其他語言一樣,在定義二維數(shù)組時,我們可以使用“int a[][]=new int[3][2]”的方式創(chuàng)建3行2列的數(shù)組,這樣的數(shù)組是規(guī)則的,與數(shù)學上的矩陣一樣。在java中我們還可以定義列數(shù)不同的數(shù)組,對于列數(shù)不同的數(shù)組稱之為不規(guī)則數(shù)組。
不規(guī)則數(shù)組的定義有兩種方式。
1.直接指定初值方式
如下語句:
int a [][] = {{1,2,3},{4,5},{6,7,8,9}};
就定義了一個不規(guī)則數(shù)組,這樣,數(shù)組中各元素包括:
a[0][0], a[0][1], a[0][2],
a[1][0], a[1][1],
a[2][0], a[2][1], a[2][2], a[2][3],
其他元素的訪問則會導致數(shù)組下標異常錯誤,如
System.out.println(a[0][3]);
System.out.println(a[1][2]);
System.out.println(a[1][3]);
都會產(chǎn)生異常
2.用new關(guān)鍵字初始化數(shù)組
除了直接指定初值的方式外,還可以使用new關(guān)鍵字創(chuàng)建不規(guī)則數(shù)組,如下語句同樣創(chuàng)建了一個不規(guī)則數(shù)組:
int[ ][ ] arr=new int[3][];
arr[0]=new int[3];
arr[1]=new int[2];
arr[2]=new int[4];
這里需要注意的是“int[ ][ ] arr=new int[3][];”語句與C++的定義方式正好相反,在C++中,數(shù)組的定義形式為“int[ ][ ] arr=new int[][3];”,讀者一定不要混淆。
不規(guī)則數(shù)組的好處是可以節(jié)省存儲空間,對于列不是完全相同的時候可以使用,在下面的楊輝三角形的例子中使用的就是不規(guī)則數(shù)組。