java-二维数组

一維陣列使用陣列名稱與一個索引值來指定存取陣列元素,您也可以宣告二維陣列,二維陣列使用陣列名稱與兩個索引值來指定存取陣列元素,其宣告方式與一維陣列類似:
int[][] arr = {{1, 2, 3},
               {4, 5, 6}};

從上面這個程式片段來看,就可以清楚的看出二維陣列的索引方式,您宣告了2列(Row)3行(Column)的陣列,您可以使用{ }與適當的斷行協助您指定陣列初值,下面這個程式簡單的示範二維陣列的存取:

  • TwoDimarray.java
public class TwoDimArray { 
    public static void main(String[] args) { 
        int[][] arr = {{1, 2, 3}, 
                       {4, 5, 6}}; 
        for(int i = 0; i < arr.length; i++) { 
            for(int j = 0; j < arr[0].length; j++) 
                System.out.print(arr[i][j] + " "); 
            System.out.println(); 
        } 
    } 
}  

執行結果:
1 2 3
4 5 6


在使用二維陣列物件時,注意length所代表的長度,陣列名稱直接加上length,所指的是有幾列(Row),而使用索引加上length,指的是該列所擁有的元素,也就是行(Column)數目,要瞭解為何是這樣,必須從物件配置的角度來說明。

以物件的方式來配置一個二維陣列物件,您使用以下的語法:
int[][] arr = new int[2][3];

上面這個程式片段中,您配置了2列3行的二維陣列物件,由於資料型態是int,所以陣列元素的預設元素為0,事實上這樣的語法是Java為了程式設計人員使用上的方便所設計的,來細究配置的細節。

在上面的程式片段中,其實arr[0]、arr[1]是兩個一維陣列物件,其長度為3,而arr的型態為int[][],內容值為arr[0]與arr[1],其關係如下:
二維陣列配置

從上圖中您可以看到,arr名稱參考至int[][]型態的物件,而arr[0]與arr[1]再分別參考至一個一維陣列物件,所以這也就是為何上面的程式中,使用的length所表示的長度意義,您也可以知道,在Java中,一個二維陣列的配置,各個元素的記憶體位置並不是連續的。

同樣的道理,您也可以宣告三維以上的陣列,如果要宣告同時初始元素值,可以使用以下的語法:
int[][][] arr = {
                  {{1, 2, 3}, {4, 5, 6}},
                  {{7, 8, 9}, {10, 11, 12}}
                };

上面這個程式片段所宣告的三維陣列是2x2x3,您將之想為兩面2x3二維陣列交疊在一起就是了,每一面的元素如下:
第一面
1 2 3

4 5 6

第二面
7  8  9
10 11 12

您也可以藉由立方體的(x, y, z)關係來標示三個索引值的關係,也就是列、行與高。

如果要動態宣告三維陣列,就使用以下的語法:
int[][][] arr = new int[2][2][3];

多維以上的陣列在Java中也是可行的,但並不建議使用,使用多維陣列會讓元素索引的指定更加困難,此時適當的將資料加以分割,或是使用其它的資料結構來解決,會比直接宣告多維陣列來得實在。

由以上的說明,接下來討論一個進階議題:不規則陣列。陣列的維度不一定要是四四方方的,您也可以製作一個二維陣列,而每個維度的長度並不相同,例如:

  • TwoDimArray.java
public class TwoDimArray { 
    public static void main(String[] args) { 
        int arr[][]; 
 
        arr = new int[2][]; 
        arr[0] = new int[3]; 
        arr[1] = new int[5]; 
 
        for(int i = 0; i < arr.length; i++) { 
            for(int j = 0; j < arr[i].length; j++) 
                arr[i][j] = j + 1; 
        } 
 
        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
1 2 3 4 5


這個例子只是上面的說明之觀念延伸,在這個例子中,陣列第一列的長度是3,而第二列的長度是5。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值