谷歌正測試 YouTube PWA 支援下載視訊、離線觀看
阿新 • • 發佈:2021-11-28
二維陣列
一、二維陣列
1、二維陣列的含義: 就是元素是一維陣列的陣列 舉例: {{11,22},{11,33},{55,88}} 2、二維陣列的定義格式: 格式1: 資料型別[][] 變數名 = new 資料型別[m][n]; 左邊: 資料型別:表示最終元素的資料型別 [][]:表示是一個二維陣列 變數名:二維陣列的名稱 右邊: new:表示為二維陣列分配記憶體空間 [m]:表示這個二維陣列中有個元素,其中元素表示的是m個一維陣列 [n]:表示的是每一個一維陣列中有n個元素,元素的資料型別與定義時的資料型別一致 舉例:int[][] arr = new int[3][2] 解釋:表示的是定義了一個名為arr的二維陣列,元素是由3個一維陣列組成,其中 每個一維陣列的元素的個數為2個 ================================================================================== 格式2: 資料型別[][] 變數名 = new 資料型別[m][] 右邊: []:這裡暫時不將每個一維陣列中的元素個數寫死,以將來傳入的一維陣列元素個數而定 舉例: int[][] arr = new int[3][] ================================================================================== 格式3: 資料型別[][] 變數名 = new 資料型別[][]{{元素…},{元素…},{元素…},...} 舉例: int[][] arr = new int[][]{{1,2},{11,22,33},{100,200,300},{10,20}}; 簡化格式: 資料型別[][] 變數名 = {{元素…},{元素…},{元素…},...}; 舉例: int[][] arr = {{1,2},{11,22,33},{100,200,300},{10,20}}; ==================================================================================== 3、注意格式的轉換: 以下定義的格式也算正確(不推薦使用) 資料型別 變數名[][] = new 資料型別[m][n]; 資料型別[] 變數名[] = new 資料型別[m][n]; 舉例:int[][] arr = new int[2][3]; (推薦第一種) int arr[][] = new int[3][4]; int[] arr[] = new int[2][3];
4、第一種格式: 獲取二維陣列中元素的地址值,此地址值就是一維陣列的地址值 public class Array2Demo1 { public static void main(String[] args) { //使用第一種格式定義一個二維陣列,每一個一維陣列的元素個數為2 int[][] arr = new int[3][2]; //3代表的是由三個一維陣列組成 //2代表的是每一個一維陣列的元素個數為2個 //按照之前的輸出格式,我們先輸出名字 System.out.println(arr); //輸出的是二維陣列在堆記憶體中的地址值 [[I@1540e19d System.out.println(arr[0]);//輸出的是第一個一維陣列在記憶體中的地址值 [I@677327b6 System.out.println(arr[1]);//輸出的是第二個一維陣列在記憶體中的地址值 [I@14ae5a5 System.out.println(arr[2]);//輸出的是第三個一維陣列在記憶體中的地址值 [I@7f31245a
5、獲取元素的方法 public class Array2Demo1 { public static void main(String[] args) { //使用第一種格式定義一個二維陣列,每一個一維陣列的元素個數為2 int[][] arr = new int[3][2]; //陣列獲取元素的方法是通過索引獲取 System.out.println(arr[0][0]); //0 //輸出的是第一個一維陣列中第一個元素值 System.out.println(arr[0][1]); //0 //輸出的是第一個一維陣列中第二個元素值 System.out.println(arr[2][1]); //0 //輸出的是第三個一維陣列的第二個元素值
當使用兩種不同格式定義二維陣列,未賦值之前,二者輸出的地址值不同
6、第二種格式:
public class Array2Demo2 {
public static void main(String[] args) {
//使用第二種格式定義一個二維陣列,每一個一維陣列的元素個數沒有定
int[][] arr = new int[3][];
System.out.println(arr); //輸出的是二維陣列本身的地址值 [[I@1540e19d
System.out.println(arr[0]); //輸出的是二維陣列中第一個一維陣列的地址值 null
System.out.println(arr[1]); //輸出的是二維陣列中第二個一維陣列的地址值 null
System.out.println(arr[2]); //輸出的是二維陣列中第三個一維陣列的地址值 null
=======================給二維陣列的元素賦值================================
//初始化一個元素個數為2個的一維陣列,賦值給二維陣列中第一個元素
arr[0] = new int[2];
//初始化一個元素個數為3個的一維陣列,賦值給二維陣列中第二個元素
arr[1] = new int[3];
//初始化一個元素個數為4個的一維陣列,賦值給二維陣列中第三個元素
arr[2] = new int[4];
==========================賦值後地址值不是null===================================
System.out.println(arr); //輸出的是二維陣列本身的地址值 [[I@1540e19d
System.out.println(arr[0]); //輸出的是二維陣列中第一個一維陣列的地址值 [I@677327b6
System.out.println(arr[1]); //輸出的是二維陣列中第二個一維陣列的地址值 [I@14ae5a5
System.out.println(arr[2]); //輸出的是二維陣列中第三個一維陣列的地址值[I@7f31245a
//獲取二維陣列中第二個一維陣列中的第1個元素
System.out.println(arr[1][0]); //預設為0
7、第三種格式:
public class Array2Demo3 {
public static void main(String[] args) {
//使用二維陣列定義格式2定義
int[][] arr = {{1,2},{11,22,33},{100,200,300},{10,20,30,40}};
System.out.println(arr); //輸出二維陣列本身的地址值
System.out.println(arr[0]); //輸出二維陣列中第一個一維陣列的地址值
System.out.println(arr[1]); //輸出二維陣列中第二個一維陣列的地址值
System.out.println(arr[2]); //輸出二維陣列中第三個一維陣列的地址值
System.out.println(arr[3]); //輸出二維陣列中第四個一維陣列的地址值
二、二維陣列的遍歷以及包裝
1、需要兩個for迴圈:
外部for迴圈遍歷獲取的是每一個一維陣列
內部for迴圈遍歷的是獲取到的每一個一維陣列中每個元素值
二維陣列遍歷
int[][] arr = {{1,2},{11,22,33},{100,200,300},{10,20,30,40}};
分析:
1、先獲取每一個一維陣列
2、一次遍歷每一個一維陣列中的元素值
public class Array2Test1 {
public static void main(String[] args) {
//定義一個二維陣列
int[][] arr ={{1,2},{11,22,33},{10,20,30,40}};
for(int i =0;i<arr.length;i++){ //外層for獲取每一個一維陣列
for(int j=0;j<arr[i].length;j++){ //內層for獲取每一個一維陣列的元素值
if(j==0){
System.out.print("["+arr[i][j]+","); //遍歷包裝,為了美觀
}else if(j==arr[i].length-1){
System.out.print(arr[i][j]+"]"); //遍歷包裝,為了美觀
}else{
System.out.print(arr[i][j]+","); //中間數直接輸出,不需要包裝
}
}
}
}
}
執行結果如下:
[1,2][11,22,33][10,20,30,40]
Process finished with exit code 0
1