之前我們已經知道什么是 陣列(一維陣列)java 基礎——陣列,陣列的存取
這里補充一點: 陣列本身是參考資料型別 ,陣列的元素 可以是 基本資料型別 跟 參考資料型別
那么?什么是二維陣列 ?
官方定義:以一維陣列作為一維陣列元素的陣列
要是有點繞,不好理解,沒關系,簡單來說,就是一維陣列里面存一維陣列 ,這就是二維陣列
到這,是不是已經基本明白了二維陣列的概念了
現在我們直接來看語法:
2. 二維陣列語法格式
-
資料型別 [][] 識別符號(自己取的名字) = { {},{},{} ..... }
回顧一下一維陣列 這種創建方式:
// 這是一維陣列
int[] arr1 = {1,2,3};
// 這是一個二維陣列
int[][] arr2 = {{1,2,3},{2,3},{6,3,9}};
從外表來看二維陣列就比一位陣列 多 加了個 [ ], 陣列內的元素也不是 個數了,而是 { } ,這個代表的是一個一維陣列,里面內容一樣是元素
-
資料型別 [][] 識別符號(自己取的名字)= new 資料型別[陣列里元素個數][每個元素里面一維陣列長度]
陣列里元素個數 = 二維陣列長度
int[][] array1 = new int[3][2];
來看個圖解

宣告一個二維陣列array1,里面有三個元素,每個元素里面有兩個元素的陣列
3. 二維陣列的取值
單個取值
二維陣列的取值呢,跟一維陣列還是有差別的
比如下面這個例子,我們要獲取這個二維陣列中的 6
int[][] arr2 = {{1,2,3},{2,3},{6,3,9}};
這邊我們可以理解成一個平面坐標系,坐標系我們都知道,(x,y)我們可以確定一個平面點的位置,這邊也一樣
首先可以看出這個二維陣列里面有三個元素:
元素1: 下標 0 (陣列的角標從0 開始),{1,2,3}
元素2: 下標 1,{2,3}
元素3: 下標 2,{6,3,9}
每個元素又是一個陣列,下標還是從0 開始
所以 我們獲取 6 這個元素 arr2[2][0], 意味著 6 在這個 二維陣列中 元素3 (下標2) 里面 的 陣列 的 第1個(下標0) 元素
int[][] arr2 = {{1,2,3},{2,3},{6,3,9}};
System.out.println(arr2[2][0]);

這種方式的也一樣:int[][] array1 = new int[3][2];

可以理解成 3 行 2 列
遍歷取值
我們來看看二維陣列是怎么遍歷的,這邊我們就需要兩層 for回圈了
比如:
遍歷 int[][] arr2 = {{1,2,3},{6,3,9,10}};
int[][] arr2 = {{1,2,3},{6,3,9,10}};
System.out.println("----------基本回圈----------");
for (int i = 0; i < arr2.length; i++) {
for (int j = 0;j < arr2[i].length;j++) {
System.out.print(arr2[i][j]+" ");
}
}
System.out.println();
System.out.println("----------增強for回圈----------");
for (int[] ints : arr2) {
for (int anInt : ints) {
System.out.print(anInt+" ");
}
}
輸出結果:

4. 存值
二維陣列的 存值 你可以 一個一個來, arr[0][0] ,,,,
int[][] arr = new int[3][2];
arr[0][0] = 1;
arr[0][1] = 3;
arr[1][0] = 5;
arr[1][1] = 7;
arr[2][0] = 9;
arr[2][1] =11;
for (int[] ints : arr) {
for (int anInt : ints) {
System.out.println(anInt);
}
}
當然里面是存的一維陣列,你也可以這樣 ,比如有兩個一維陣列 ,一維陣列的值怎么來,就不用多說了,除了常規添加外,java 基礎——陣列 可以看看逗號隔開字串轉陣列方法 (開發中陣列轉字串,轉list集合用的很多)
比如 現在有兩個字串,要存盤到二維陣列中
//定義一個二維陣列
String [][] arr = new String[3][2];
String str1 = "2,3,6,9";
String str2 = "11,13";
//字串轉陣列
String[] split = str1.split(",");
String[] split1 = str2.split(",");
//將二維陣列第一個元素的值設定為 一維陣列 split
arr[0] = split;
//將二維陣列第二個元素的值設定為 一維陣列 split1
arr[1] = split1;
//輸出看看
for (String[] strings : arr) {
for (String string : strings) {
System.out.println(string);
}
}

這里也可以看到二維陣列中 一維陣列的長度可以不一樣 ,第三個沒有元素,就是我們定義的默認一維陣列長度 2 了,為null

擴展 :二維陣列的初始化記憶體決議 (有的面試會問,有個印象)
現在我們知道了二維陣列 獲取單個 元素,以及 遍歷 , 下面我們來加深下對二維陣列的理解
一般我們宣告二維陣列的初始化 ,
int[][] arr = new int [3][2];
它的外層元素:arr[0] arr[1] arr[2] .....
它的內層元素:arr[0][0] arr[1][2] ......
內層元素我們都知道,是獲取一個具體的值
那么?外層是什么東西呢?我們來列印一下
int[][] arr = new int [3][2];
System.out.println(arr[0]);

可以看出它是一個地址值,這是二維 元素 指向 一位陣列的地址值

arr 才是堆疊 指向 二維陣列的地址值
int[][] arr = new int [3][2]; System.out.println(arr);


看出區別了沒,一維陣列一個[ 二維陣列 兩個[

更多內容,還請關注【java資訊】 公眾號
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/538302.html
標籤:Java
