可以在二維陣列中儲存表格資料。在陣列宣告的每個維度的一對括號[]
來宣告多維陣列。
例如,如下所示定義int
型別的二維陣列:
int[][] table;
這裡,table
是一個參照變數,可以儲存對int
型別的二維陣列的參照。下面建立具有三行和兩列的int
型別二維陣列,如下所示:
table = new int[3][2];
多維陣列中每個維度的索引都是從零開始的。可使用table[rownumber] [columnNumber]
存取table
陣列的每個元素。行號(rownumber
)和列號(columnNumber
)始終從0
開始。
例如,以下程式碼將一個值 32
分配給表陣列中的第一行和第二列,如圖所示:
table[0][1] = 32;
可以將值1
分配給第三行和第一列,如下所示:
table[2][0] = 1;
必須在建立多維陣列時指定至少第一級陣列的維度。例如,
table = new int[3][];
此語句僅建立第一級陣列。此時僅存在table[0]
,table[1]
和table[2]
,它們都是參照 null
值。 table.length
的值為3
。table[0]
,table[1]
和table[2]
是int
型別的陣列,也可以將它們賦值為 -
table[0] = new int[2]; // Create two columns for row 1
table[1] = new int[2]; // Create two columns for row 2
table[2] = new int[2]; // Create two columns for row 3
Java可以為每行建立一個具有不同列數的二維陣列。這樣的陣列稱為粗糙陣列。
public class Main {
public static void main(String[] args) {
// Create a two-dimensional array of 3 rows
int[][] raggedArray = new int[3][];
// Add 2 columns to the first row
raggedArray[0] = new int[2];
// Add 1 column to the second row
raggedArray[1] = new int[1];
// Add 3 columns to the third row
raggedArray[2] = new int[3];
// Assign values to all elements of raggedArr
raggedArray[0][0] = 1;
raggedArray[0][1] = 2;
raggedArray[1][0] = 3;
raggedArray[2][0] = 4;
raggedArray[2][1] = 5;
raggedArray[2][2] = 6;
// Print all elements. One row at one line
System.out.println(raggedArray[0][0] + "\t" + raggedArray[0][1]);
System.out.println(raggedArray[1][0]);
System.out.println(raggedArray[2][0] + "\t" + raggedArray[2][1] + "\t"
+ raggedArray[2][2]);
}
}
上面的程式碼生成以下結果。
1 2
3
4 5 6
通常,使用巢狀for
迴圈來填充多維陣列。用於處理多維陣列的for
迴圈次數等於陣列中的維數。
以下程式碼顯示了如何存取多維陣列的元素
public class Main {
public static void main(String[] args) {
int[][] myArray = new int[3][];
myArray[0] = new int[2];
myArray[1] = new int[1];
myArray[2] = new int[3];
// Populate the ragged array using for loops
for (int i = 0; i < myArray.length; i++) {
for (int j = 0; j < myArray[i].length; j++) {
myArray[i][j] = i + j;
}
}
// Print the array using for loops
for (int i = 0; i < myArray.length; i++) {
for (int j = 0; j < myArray[i].length; j++) {
System.out.print(myArray[i][j] + "\t");
}
// Add a new line after each row is printed
System.out.println();
}
}
}
上面的程式碼生成以下結果。
0 1
1
2 3 4
可以在宣告時或在建立時提供值列表來初始化多維陣列中的每個元素。
每個維度的初始值數量將決定陣列中每個維度的長度。級別的值列表用大括號括起來。對於二維陣列,每行的值列表都包含在一對大括號中,如下所示:
int[][] arr = {{10, 20, 30},
{1, 2},
{2, 3, 4, 5}};
在上面的語句中建立一個具有三行的二維陣列。以下程式碼顯示如何初始化一個二維String
型別的陣列:
String[][] acronymlist = {{"A", "a"},
{"B", "b"},
{"C", "c"}};
可以在建立多維陣列時初始化多維陣列的元素。如下程式碼所示 -
int[][] arr = new int[][]{{1, 2}, {3,4,5}};