5.2.2 二維數(shù)組的初始化
同一維數(shù)組一樣,只聲明了數(shù)組,這時(shí)候其值為null,要想使用數(shù)組,還需要做初始化工作。數(shù)組初始化為聲明的數(shù)組指定數(shù)組元素個(gè)數(shù),為數(shù)組元素分配空間并賦值。數(shù)組初始化可以通過如下幾種方式完成。
1. 用new關(guān)鍵字初始化數(shù)組
用關(guān)鍵字new初始化數(shù)組時(shí),除了為數(shù)組指定數(shù)組元素個(gè)數(shù)、分配存儲(chǔ)空間外,還會(huì)為數(shù)組元素按照數(shù)據(jù)類型的不同賦初值。具體如下:
若為數(shù)值型,數(shù)組元素的默認(rèn)值為0,;
若為布爾型,數(shù)組元素的默認(rèn)值為false;
若為引用型,數(shù)組元素的默認(rèn)值為空(null)。
(1)先聲明數(shù)組,在初始化數(shù)組。這里實(shí)際上是兩條語(yǔ)句,具體格式如下:
數(shù)據(jù)類型[][] 數(shù)組名; 或數(shù)據(jù)類型 數(shù)組名[][];
數(shù)組名=new 數(shù)據(jù)類型[length1][length2];
第一條語(yǔ)句是數(shù)組聲明語(yǔ)句,第二條語(yǔ)句則是初始化語(yǔ)句。要求這兩條語(yǔ)句中數(shù)組名、數(shù)據(jù)類型必須一致。Length1指定數(shù)組的行數(shù),length2指定數(shù)組的列數(shù)。
數(shù)組的Length1和Length2可以是直接的int類型常數(shù),也可以是已經(jīng)賦值的int類型變量或int類型表達(dá)式。
例如:
int m=3,n=2;
int[] a;
a = new int[m][n];
上面的語(yǔ)句聲明并初始化一個(gè)3行兩列的數(shù)組a,同時(shí),根據(jù)默認(rèn)值的約定,數(shù)組a中的所有元素初值均為0
(2)在聲明數(shù)組的同時(shí)用new關(guān)鍵字初始化數(shù)組。實(shí)際上,這種方式是將第一種方式的兩條語(yǔ)句合并為一條語(yǔ)句。格式如下:
數(shù)據(jù)類型[][] 數(shù)組名 =new 數(shù)據(jù)類型[length1][length2];
或
數(shù)據(jù)類型 數(shù)組名[][]=new 數(shù)據(jù)類型[length1][length2];
例如:
int m=3,n=2;
int[][] a = new int[m][n];
2.用一個(gè)已經(jīng)初始化的數(shù)組對(duì)數(shù)組初始化
可以直接使用一個(gè)已經(jīng)初始化的數(shù)組對(duì)新聲明的數(shù)組進(jìn)行初始化。
格式如下:
數(shù)據(jù)類型[][] 數(shù)組名=已初始化數(shù)組
例如:
Int[][]a=new int[10][10];
Int[][]b=a;
同一維數(shù)組一樣,這種初始化會(huì)使得數(shù)組a與b具有相同的存儲(chǔ)地址,a數(shù)組與b數(shù)組指向了同一個(gè)物理地址,任何對(duì)數(shù)組a的改變都會(huì)使數(shù)組b做相應(yīng)的修改,同樣,任何對(duì)數(shù)組b的修改也會(huì)使a數(shù)組的內(nèi)容發(fā)生變化。
3.直接指定初值的方式
用直接指定初值的方式初始化數(shù)組是指在聲明數(shù)組的同時(shí)將數(shù)組元素的初值依次寫入賦值號(hào)(=)后的一對(duì)大括號(hào)({})內(nèi),大括號(hào)中的每個(gè)元素也是一對(duì)大括號(hào)。如:
int a [][] = {{1,2},{3,4},{5,6}};
這樣就定義了一個(gè)3行2列的數(shù)組。