一、定義和初始化
Java二維數組是一種特殊的數組,它是由一個或多個一維數組組成的集合。定義二維數組時需要指定行數和列數,形式如下:
數據類型[][] 數組名 = new 數據類型[行數][列數];
其中,數據類型代表二維數組中元素的類型,數組名代表數組的名稱,行數代表指定的行數,列數代表指定的列數。例如,定義一個3行4列的整型數組:
int[][] arr = new int[3][4];
初始化二維數組可以採用靜態初始化和動態初始化兩種方式。靜態初始化時需要在定義時就指定每個元素的值,形式如下:
數據類型[][] 數組名 = {{元素1, 元素2, ...}, {元素1, 元素2, ...}, ...};
例如,定義一個2行3列的字元串數組並進行靜態初始化:
String[][] arr = {{"a", "b", "c"}, {"d", "e", "f"}};
動態初始化時可以先定義一個二維數組,然後再為每個元素賦值,形式如下:
數據類型[][] 數組名 = new 數據類型[行數][列數];
數組名[行索引][列索引] = 值;
例如,定義一個3行2列的浮點型數組並進行動態初始化:
double[][] arr = new double[3][2];
arr[0][0] = 1.0;
arr[0][1] = 2.0;
arr[1][0] = 3.0;
arr[1][1] = 4.0;
arr[2][0] = 5.0;
arr[2][1] = 6.0;
二、遍歷二維數組
遍歷二維數組是指訪問數組中的每個元素。Java中遍歷二維數組常用的方法有兩種,分別是使用for循環和for-each循環。
使用for循環
使用for循環遍歷二維數組可以採用兩層嵌套循環,外層循環控制行數,內層循環控制列數。例如,遍歷一個3行4列的整型數組:
int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
輸出結果為:
1 2 3 4
5 6 7 8
9 10 11 12
使用for-each循環
使用for-each循環遍歷二維數組時,需要先遍歷每一行,然後再遍歷每一列。例如,遍歷一個2行3列的字元串數組:
String[][] arr = {{"a", "b", "c"}, {"d", "e", "f"}};
for (String[] row : arr) {
for (String element : row) {
System.out.print(element + " ");
}
System.out.println();
}
輸出結果為:
a b c
d e f
三、二維數組作為參數和返回值
二維數組可以作為方法的參數和返回值。當作為參數時,需要在方法聲明中指定二維數組的數據類型和名稱。例如,定義一個方法列印二維數組:
public static void printArray(int[][] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
當作為返回值時,需要在方法聲明中指定返回值類型為二維數組。例如,定義一個方法返回一個3行4列的整型數組:
public static int[][] getArray() {
int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
return arr;
}
四、二維數組的常見操作
獲取二維數組的行數和列數
可以使用二維數組的length屬性獲取一維數組的個數,使用一維數組的length屬性獲取一維數組中元素的個數,以此來獲取二維數組的行數和列數。例如,獲取一個3行4列的整型數組的行數和列數:
int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int rows = arr.length; //行數為3
int columns = arr[0].length; //列數為4
複製二維數組
可以使用Arrays工具類的copyOf方法或clone方法複製二維數組。但需要注意的是,這兩種方法只能複製一維數組,如果需要複製多維數組,則需要使用循環逐個複製。
//使用Arrays.copyO方法複製一維數組
int[] arr1 = {1, 2, 3, 4};
int[] arr2 = Arrays.copyOf(arr1, arr1.length);
//使用clone方法複製一維數組
int[] arr3 = arr1.clone();
//使用循環逐一複製二維數組
int[][] arr4 = {{1, 2, 3}, {4, 5, 6}};
int rows = arr4.length;
int columns = arr4[0].length;
int[][] arr5 = new int[rows][columns];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
arr5[i][j] = arr4[i][j];
}
}
排序二維數組
可以使用Arrays工具類的sort方法排序一維數組,但需要注意的是,sort方法會先將二維數組轉化為一維數組,再進行排序。因此,需要自定義比較器Comparator對二維數組進行排序。例如,對一個3行4列的整型數組按照行數之和進行排序:
int[][] arr = {{5, 2, 3, 4}, {1, 6, 7, 8}, {9, 10, 11, 12}};
Arrays.sort(arr, new Comparator<int[]>() {
public int compare(int[] a, int[] b) {
int sum1 = 0;
int sum2 = 0;
for (int i : a) {
sum1 += i;
}
for (int i : b) {
sum2 += i;
}
return sum1 - sum2;
}
});
//輸出排序結果
for (int[] row : arr) {
for (int element : row) {
System.out.print(element + " ");
}
System.out.println();
}
輸出結果為:
5 2 3 4
1 6 7 8
9 10 11 12
小結
本文從定義和初始化、遍歷、作為參數和返回值、常見操作四個方面對Java二維數組進行了詳細的闡述。二維數組的應用廣泛,掌握了它的相關知識,可以更好地進行Java編程。
原創文章,作者:EFXNP,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/371517.html