第十二天 二維數組與多維數組

 

1.1.1 二維數組

如果說可以把一維數組當成幾何中的線性圖形,那麼二維數組就相當於是一個表格,像Excel中的表格那樣,如下圖:

二維數組聲明的方式和一維數組類似,內存的分配也要使用new關鍵字。其聲明與分配內存的格式如下:

數據類型 數組名[][];

數組名 = new 數據類型[行的個數][列的個數];

與一維數組不同的是,二維數組在分配內存時,必須告訴編譯器二維數組行與列的個數。範例:

int score[][];

score = new int[4][3];

同樣的,可以用較爲簡潔的方式來聲明數組:

int score[][] = new int[4][3];

上面的語句中,整型數據score可保存的元素有4*3=12個,而在Java中,int數據類型所佔用的空間爲4個字節,因此,該整型數組佔用的內存共爲4*12=48個字節,如圖所示:

二維數組的定義及使用:

class ArrayDemo07{

public static void main(String[] args) {

int score[][] = new int[4][3];

score[0][1] = 30;

score[1][0] = 31;

score[2][2] = 32;

score[3][1] = 33;

score[1][1] = 30;

for (int i = 0; i < score.length; i++) {

for (int j = 0; j < score[i].length; j++) {

System.out.print(score[i][j] + "\t");

}

System.out.println();

}

}

}

運行結果:

0 30 0

31 30 0

0 0 32

0 33 0

從程序中讀者應該可以找到一個規律,即一維數組如果要全部輸出,需要一層循環,而二維數組要想全部輸出,則應使用兩層循環,同理,對於N維數組,則要使用N層循環。

二位數組也可以利用大括號進行靜態初始化,只要在數組的聲明格式後面再加上所賦值的初值即可,如下面的格式:

數據類型 數組名[][] = {

{0行初值},

{1行初值},

{n行初值},

};

要特別注意的是,用戶不需要定義數組的長度,因此,在數組名後面的中括號中不必填入任何內容。此外,在大括號內還有幾組大括號,每組大括號內的初值會依序指定給數組的第01n行元素,如圖:

下面是關於二維數組score聲明及賦初值的範例:

class ArrayDemo08{

public static void main(String[] args) {

int score[][] = {{12,21},

{44,55,66,77},

{2,54,767,123,32}

};

for (int i = 0; i < score.length; i++) {

for (int j = 0; j < score[i].length; j++) {

System.out.print(score[i][j] + "\t");

}

System.out.println();

}

}

}

運行結果:

12 21

44 55 66 77

2 54 767 123 32

1.1.2 多維數組

想要提高數組的維數,只要在聲明數組將索引與中括號再加上一組即可,所以三圍數組的聲明爲int score[][][],而四維數組爲int score[][][][]…,以此類推。

使用多維數組時,輸入、輸出的方式和一維、二維數組相同,當時每多一維,嵌套循環的層數就必須多一層,所以維數越高的數組其複雜度也就越高。下面的程序爲三維數組在聲明時即賦初值,再將其元素值輸出並計算總和:

class ArrayDemo09{

public static void main(String[] args) {

int score[][][] = {

{

{12,32,44},

{33,77}

},

{

{23,32,44,55}

}

  };

for (int i = 0; i < score.length; i++) {

for (int j = 0; j < score[i].length; j++) {

for (int j2 = 0; j2 < score[i][j].lengthj2++) { System.out.println("score["+i+"]["+j+"]["+j2+"]---"+score[i][j][j2]+"\t");

}

}

}

}

}

運行結果:

score[0][0][0]---12

score[0][0][1]---32

score[0][0][2]---44

score[0][1][0]---33

score[0][1][1]---77

score[1][0][0]---23

score[1][0][1]---32

score[1][0][2]---44

score[1][0][3]---55

因爲是三維數組所以使用了3層循環,N維數組要用N層循環,但是一般不建議使用多維數組進行操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章