糯米文學吧

位置:首頁 > 計算機 > java語言

JAVA多維數組備考知識點解析2017

java語言8.99K

維數為二維或高於二維的數組稱為多維數組,在java中並沒有真正的多維數組,只有數組的數組。下面是小編整理的關於JAVA多維數組備考知識點解析,歡迎閲讀!

JAVA多維數組備考知識點解析2017

  (一) 二維數組的聲明

二維數組與一維數組的聲明類似,只是需要用兩個“[]”來表明是二維數組的聲明,格式如下:

數據類型 數組名[][];

數據類型[][] 數組名;

數據類型[]數組名[];

其中:數據類型可以是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數組與其他編程語言的不同,給出了不規則數組的概念,並給出了一個不規則數組的具體應用實例。