通過上一節(jié)的學習,我們知道了Java中沒有多維數(shù)組這個概念,只有一維數(shù)組,我們可以把多維數(shù)組理解為數(shù)組的數(shù)組,所以就會衍生出一種不規(guī)則數(shù)組。
舉個例子,規(guī)則的4×3二維數(shù)組有12個元素,但是不規(guī)則的4×3二維數(shù)組就不一定有多少個元素。例如,靜態(tài)初始化一個不規(guī)則數(shù)組:
int Array[][] = {{1,2},{3},{4,5,6},{7,8}};
我們把二維及二維以上的數(shù)組稱為高維數(shù)組,那么上面這個高維數(shù)組有4個元素,但是低維數(shù)組元素個數(shù)不一樣,其中第1個數(shù)組有2個元素,第2個數(shù)組有1個元素,第3個數(shù)組有3個元素,第4個數(shù)組有2個元素,這就是我們所說的不規(guī)則數(shù)組。
動態(tài)初始化一個不規(guī)則數(shù)組要麻煩一點,它不可以直接使用new int[4][3]語句,我們要先初始化高維數(shù)組,之后再分別初始化低維數(shù)組,例如:
int Array[][] = new int[4][]; //先初始化高維數(shù)組為4 Array[0] = new int[2]; //逐一初始化低維數(shù)組 Array[1] = new int[1]; Array[2] = new int[3]; Array[3] = new int[2];
那么上述代碼初始化數(shù)組完成以后,我們可以知道并沒有12個元素,而是只有8個元素,其中下標為[0][2]、[1][1]、[1][2]和[3][2]是不存在的,當我們試圖訪問它們的時候,就會拋出下標越界異常。
注意:下標越界異常(ArrayIndexOutOfBoundsException)是試圖訪問不存在的下標時引發(fā)的。比如,假設一個一維數(shù)組Array有12個元素,那么表達式Array[12]就會發(fā)生下標越界異常,這是因為數(shù)組下標是從0開始的,最后一個元素下標應該是數(shù)組長度減1,所以Array[12]訪問的元素是不存在的。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程