透過上一節的學習,我們知道了Java中沒有多維數組這個概念,只有一維數組,我們可以把多維數組理解為數組的數組,所以就會衍生出一個不規則數組。
舉個例子,規則的4×3二維數組有12個元素,但是不規則的4×3二維數組就不一定有多少個元素。例如,靜態初始化一個不規則數組:
intArray[][]={{1,2},{3},{4,5,6},{7,8}};
我們把二維及二維以上的數組稱為高維數組,那麼上面這個高維數組有4個元素,但是低維數組元素個數不一樣,其中第1個數組有2個元素,第2個數組有1個元素,第3個數組有3個元素,第4個數組有2個元素,這就是我們所說的不規則數組。
動態初始化一個不規則數組要麻煩一點,它不可以直接使用new int[4][3]語句,我們要先初始化高維數組,之後再分別初始化低維數組,例如:
intArray[][]=newint[4][];//先初始化高維數組為4Array[0]=newint[2];//逐一初始化低維數組Array[1]=newint[1];Array[ 2]=newint[3];Array[3]=newint[2];
那麼上述程式碼初始化陣列完成以後,我們可以知道並沒有12個元素,而是只有8個元素,其中下標為[0][2]、[1][1]、[1][2]和[ 3][2]是不存在的,當我們試圖訪問它們的時候,就會拋出下標越界異常。
注意:下標越界異常(ArrayIndexOutOfBoundsException)是試圖存取不存在的下標時引發的。例如,假設一個一維數組Array有12個元素,那麼表達式Array[12]就會發生下標越界異常,這是因為數組下標是從0開始的,最後一個元素下標應該是數組長度減1,所以Array[12]所訪問的元素是不存在的。