Java 之 多維數組(二維數組)


一、多維數組

  Java 語言里提供了支持多維數組的語法。

   如果說可以把一維數組當成幾何中的線性圖形,那么二維數組就相當於是一個表格,類似於一個 Excel表格。 

  以二維數組來討論,可以看成一維數組array1 中又作為另一個一維數組 array2 的元素而存在的。 

二、二維數組聲明與初始化

  1、格式1:動態初始化

    語法格式

int[][] arr = new int[3][2];

    定義了一個名稱為 arr 的二維數組,二維數組中有3個一維數組,每一個一維數組中有2個元素,一維數組的名稱分別為 arr[0],arr[1], arr[2]

    給第一個一維數組下標為1賦值為78的寫法是:arr[0][1] = 78;

  2、格式2:動態初始化

int[][] arr = new int[3][2];

    二維數組中有3個一維數組,每個一維數組都是默認初始化值 null。(注意:區別與格式1)

    可以對這個三個一維數組分別進行初始化。

arr[0]=new int[3];      arr[1] = new int[1];   arr[2] = new int[2];

    注意: int[][] arr = new int[][3]; 是非法的,即第一個[]中必須有值。

  3、格式3:靜態初始化

    語法格式:

int[][] arr = new int[][]{{3, 8, 2}, {2, 7}, {1, 2, 3, 4}};

    定義一個名稱為 arr 的二維數組,二維數組中有三個一維數組,每一個一維數組中具體元素也都初始化了。

    第三個一維數組的長度表示方式: arr[2].length;

    注意:特殊寫法情況

int[] x,y[]:  x是一維數組,y 是二維數組

    Java 中多維數組不必都是規則矩陣形式,比如上面的每個一維數組的長度各部相同。

  4、根據類型推斷省略格式

int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
int[] arr5[] = {{1,2,3},{4,5},{6,7,8}};

 

三、二維數組的長度和訪問

  1、長度

    由於二維數組並不是規則的矩陣,其中的長度也不是同一的。

    可以使用數組的整個外層的長度,然后再根據下標一次來獲取每個內部一維數組的長度。

    Demo:

int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
System.out.println(arr4.length);//3
System.out.println(arr4[0].length);//3
System.out.println(arr4[1].length);//4

  2、訪問

    訪問二維數組中某一個元素時,需要使用兩個索引來指定元素唯一的位置。

    Demo:

int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
String[][] arr2 = new String[3][2];
System.out.println(arr1[0][1]);//2
System.out.println(arr2[1][1]);//null

  

四、遍歷二維數組

   使用二維數組常見的就是遍歷數組,介紹兩種遍歷數組的方法。

   先來學習一下各種表示方法:

表示二維數組的行數: 二維數組名.length

表示一行:      二維數組名[行下標]  (行下標的范圍:[0,二維數組總行數 - 1])

表示每一行的列數:     二維數組名[行下標].length

表示具體的一個數據: 二維數組名[行下標][列下標]  (列下標的范圍:[0,該行總列數 - 1])

  1、使用 for 循環遍歷

  2、使用 foreach 循環遍歷

    Demo:

int array[][] = new int[3][4];               //創建一個3行4列的數組,並且里面值都為默認值
// 使用 for 循環
for(int i=0;i<array.length;i++) {             // 第一個循環,循環每一行
     for (int j=0;j<array[i].length;j++) {     //第二個循環,循環每行的每一列
        System.out.print(array[i][j]);
     }
     System.out.println();
 }
// 使用 foreach for(int a[]: array) { // 第一個循環,第一個參數代表循環中的類型,即數組,第二個參數為循環對象 for(int j: a) { // 循環上一個循環中的第一個參數中的每一個即可 System.out.print(j); } System.out.println(); }

  

五、二維數組元素的默認值

  二維數組分為外層數組的元素,內層數組的元素:

外層元素:arr[0],arr[1]等  

內層元素:arr[0][0],arr[1][2]等

  數組元素的默認初始化值:

  針對於初始化方式一:比如:int[][] arr = new int[4][3];

    外層元素的初始化值為:內層數組的地址值。

    內層元素的初始化值為:與一維數組初始化情況相同

  針對於初始化方式二:比如:int[][] arr = new int[4][];

    外層元素的初始化值為: null

    內層元素的初始化值為:不能調用,否則報錯。(NullPointException)    

六、二維數組的內存解析

  1、二維數組初始化情況

    

  2、案例一

    

  3、案例二

    

  4、案例三

    

  5、案例四

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM