JAVA多維陣列備考知識點解析2017
- java語言
- 關注:7.64K次
維數為二維或高於二維的陣列稱為多維陣列,在java中並沒有真正的多維陣列,只有陣列的陣列。下面是小編整理的關於JAVA多維陣列備考知識點解析,歡迎閱讀!
(一) 二維陣列的宣告二維陣列與一維陣列的宣告類似,只是需要用兩個“[]”來表明是二維陣列的宣告,格式如下:
資料型別 陣列名[][];
或
資料型別[][] 陣列名;
或
資料型別[]陣列名[];
其中:資料型別可以是java的基本型別和引用型別,陣列名要求是一個合法的識別符號,兩個“[]”,表示是一個二維陣列。
(二)二維陣列的初始化同一維陣列一樣,只聲明瞭陣列,這時候其值為null,要想使用陣列,還需要做初始化工作。陣列初始化為宣告的陣列指定陣列元素個數,為陣列元素分配空間並賦值。陣列初始化可以通過如下幾種方式完成。
1. 用new關鍵字初始化陣列
用關鍵字new初始化陣列時,除了為陣列指定陣列元素個數、分配儲存空間外,還會為陣列元素按照資料型別的不同賦初值。具體如下:
若為數值型,陣列元素的預設值為0,;
若為布林型,陣列元素的預設值為false;
若為引用型,陣列元素的預設值為空(null)。
(1)先宣告陣列,在初始化陣列。這裡實際上是兩條語句,具體格式如下:
資料型別[][] 陣列名; 或資料型別 陣列名[][];
陣列名=new 資料型別[length1][length2];
第一條語句是陣列宣告語句,第二條語句則是初始化語句。要求這兩條語句中陣列名、資料型別必須一致。Length1指定陣列的行數,length2指定陣列的列數。
陣列的Length1和Length2可以是直接的int型別常數,也可以是已經賦值的int型別變數或int型別表示式。
例如:
int m=3,n=2;
int[] a;
a = new int[m][n];
上面的語句宣告並初始化一個3行兩列的陣列a,同時,根據預設值的約定,陣列a中的所有元素初值均為0
(2)在宣告陣列的同時用new關鍵字初始化陣列。實際上,這種方式是將第一種方式的兩條語句合併為一條語句。格式如下:
資料型別[][] 陣列名 =new 資料型別[length1][length2];
或
資料型別 陣列名[][]=new 資料型別[length1][length2];
例如:
int m=3,n=2;
int[][] a = new int[m][n];
2.用一個已經初始化的陣列對陣列初始化
可以直接使用一個已經初始化的陣列對新宣告的陣列進行初始化。
格式如下:
資料型別[][] 陣列名=已初始化陣列
例如:
Int[][]a=new int[10][10];
Int[][]b=a;
同一維陣列一樣,這種初始化會使得陣列a與b具有相同的儲存地址,a陣列與b陣列指向了同一個實體地址,任何對陣列a的改變都會使陣列b做相應的修改,同樣,任何對陣列b的修改也會使a陣列的內容發生變化。
3.直接指定初值的方式
用直接指定初值的方式初始化陣列是指在宣告陣列的同時將陣列元素的初值依次寫入賦值號(=)後的一對大括號({})內,大括號中的每個元素也是一對大括號。如:
int a [][] = {{1,2},{3,4},{5,6}};
這樣就定義了一個3行2列的陣列。
(三)不規則陣列像其他語言一樣,在定義二維陣列時,我們可以使用“int a[][]=new int[3][2]”的方式建立3行2列的`陣列,這樣的陣列是規則的,與數學上的矩陣一樣。在java中我們還可以定義列數不同的陣列,對於列數不同的陣列稱之為不規則陣列。
不規則陣列的定義有兩種方式。
1.直接指定初值方式
如下語句:
int a [][] = {{1,2,3},{4,5},{6,7,8,9}};
就定義了一個不規則陣列,這樣,陣列中各元素包括:
a[0][0], a[0][1], a[0][2],
a[1][0], a[1][1],
a[2][0], a[2][1], a[2][2], a[2][3],
其他元素的訪問則會導致陣列下標異常錯誤,如
tln(a[0][3]);
tln(a[1][2]);
tln(a[1][3]);
都會產生異常
2.用new關鍵字初始化陣列
除了直接指定初值的方式外,還可以使用new關鍵字建立不規則陣列,如下語句同樣建立了一個不規則陣列:
int[ ][ ] arr=new int[3][];
arr[0]=new int[3];
arr[1]=new int[2];
arr[2]=new int[4];
這裡需要注意的是“int[ ][ ] arr=new int[3][];”語句與C++的定義方式正好相反,在C++中,陣列的定義形式為“int[ ][ ] arr=new int[][3];”,讀者一定不要混淆。
不規則陣列的好處是可以節省儲存空間,對於列不是完全相同的時候可以使用,在下面的楊輝三角形的例子中使用的就是不規則陣列。
(四)二維陣列應用1.二維陣列元素的遍歷
在一維陣列中,遍歷陣列元素使用如下語句:
for(int i=0;i
tln(a[i]);
}
在二維陣列中可以使用如下語句遍歷陣列元素:
for(int i=0;i
for(int j=0;j
t(a[i][j]+'n');
}
tln();
}
特別注意,因為在二維陣列中存在不規則陣列的情況,所以在訪問時需要使用a[i]th的方式來限定二維陣列第二維的元素個數,否則會發生陣列下標異常錯誤。
2.利用不規則陣列實現楊輝三角形
楊輝三角形,又稱賈憲三角形,帕斯卡三角形,是二項式係數在三角形中的一種幾何排列。其形式如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
我們可以利用java的不規則陣列來儲存這些資訊,其運算規律為: a[m][n]=a[m-1][n-1]+a[m-1][n];當m=n或者n=0時,楊輝三角形的元素a[m][n]=1;否則,楊輝三角形的元素a[m,n]=a[m-1,n-1]+a[m-1,n] 。其中,m,n為三角形的行和列,均從0開始。
程式如下:
[例5-12]
class YangHui {
public void paint(int n){//輸出楊輝三角形的值,n為行數
int a[][]=new int[n][];
for(int i=0;i
a[i]=new int[i+1];//定義不規則陣列
}
for(int i=0;i
for(int j=0;j
if(i==j||j==0){
a[i][j]=1;
}
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
//不規則陣列的輸出
for(int i=0;i
for(int j=0;j
t(a[i][j]+" ");
}
tln();//輸出換行
}
}
}
public class Test5_12 {
public static void main(String[] args) {
YangHui yh = new YangHui();
t(10);
}
}
執行結果如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
讀者可以通過t(n)的方式很方便的輸出具有n行楊輝三角形的資料。讀者也可以試著修改例[5-12]讓其顯示效果更好(如顯示效果為一個等腰三角形)。
小結
本章對陣列這種引用資料型別做了較詳細的介紹,對陣列的宣告、初始化及陣列元素的使用做了詳細的說明,並給出了一維陣列的幾個典型的應用,在二維陣列的中特別指出了Java陣列與其他程式語言的不同,給出了不規則陣列的概念,並給出了一個不規則陣列的具體應用例項。
- 文章版權屬於文章作者所有,轉載請註明 https://xuezhezhai.com/zh-tw/jsj/java/4xj1qv.html