在Java中,二維數組被看作數組的數組,即二維數組是一個特殊的一維數組,二維數組的每個元素都是一個一維數組。
元素的資料型別[][] 陣列的名字= new 元素的資料型別[二維陣列的長度][一維陣列的長度];
int[][]arr=newint[3][2];
以上這種情況代表有3個一維數組,且每個一維數組有2個元素。
元素的資料型別[][] 陣列的名字= new 元素的資料型別[二維陣列的長度][];
int[][]arr=newint[3][];
以上這種情況代表有3個一維數組,但每個一維數組的元素個數不確定,且每個一維數組的元素個數可以不一樣。
元素的資料型別[][] 陣列的名稱= {{元素1,元素2,…},{元素1,元素2,…},…};
int[][]arr={{1,2,3},{4,5},{6,7,8,9}};
以上這種情況代表有3個一維數組,第一個一維數組中有3個元素,第二個一維數組中有2個元素,第三個一維數組中有4個元素,每個一維數組的元素個數可以不一樣。
聲明二維數組有下列兩種格式:
數組的元素類型數組名[][];
數組的元素類型[][] 數組名;
例如:
charcat[][];char[][]cat;
二維數組的初始化同一維數組一樣,有兩種方式:動態初始化和靜態初始化。
1)先宣告再靜態初始化
元素的資料型別[][]二維數組名;二維數組名=new元素的資料型別[][]{{元素1,元素2,元素3,…},{第二行的值列表}, …,{第n行的值列表}};
2)宣告的同時靜態初始化
元素的資料型別[][]二維陣列名稱=new元素的資料型別[][]{{元素1,元素2,元素3,…},{第二行的值列表},…,{第n行的值列表}};
注意:右邊「new 元素的資料型別[][]」中「[][]」中不能寫數字,因為行數和列數是由{}中的元素個數決定。
3)宣告的同時靜態初始化的簡化寫法
元素的資料型別[][]二維數組名={{元素1,元素2,元素3,…},{第二行的值列表},…,{第n行的值列表}};
例如:
publicclassMain{publicstaticvoidmain(String[]args){int[][]arr={{1,2,3},{4,5},{6}};//定義陣列System.out.println(arr[0 ][0]);//1System.out.println(arr[1][0]);//4System.out.println(arr[2][0]);//6System.out.println(arr[ 0][1]);//2System.out.println(arr[1][1]);//5System.out.println(arr[2][1]);//越界}}
動態初始化建立可以不用宣告裡面一維數組的長度,因此,它每個一維數組長度可以不一樣,所以,就有了下面兩種初始化方式。
1)動態初始化一:規則二維表
程式設計師指定數組的長度,後期再賦值,一開始系統會先給定元素預設初始值,規則二維表也就意味著每一行的列數是相同的,其一般格式如下,首先確定行數和列數:
元素的資料型別[][]二維數組名=new元素的資料型別[m][n];
其中m表示這個二維數組有多少個一維數組,或者說二維表一共有幾行;n表示每個一維數組的元素有多少個,或者說每行有幾個單元格。
此時創建完數組,行數列數確定,而且元素也都有預設值,再為元素賦新值:
二維數組名[行下標][列下標]=值;
例如:
publicclassMain{publicstaticvoidmain(String[]args){int[][]arr=newint[3][2];/*定義一個二維數組arr這個二維數組有3個一維數組的元素每個一維數組有2個元素*/System.out.println(arr);//輸出二維數組名稱System.out.println(arr[0]);//輸出二維數組的第一個元素一維數組的名稱System.out.println(arr[0][0]);//輸出二維數組的元素}}
2)動態初始化二:不規則二維表
不規則二維表也意味著每一行的列數可能不一樣,其一般格式如下,首先確定總行數:
元素的資料型別[][]二維數組名=new元素的資料型別[總行數][];
此時只是確定了總行數,每一行裡面現在是null,然後再確定每一行的列數,創建每一行的一維數組:
二維數組名[行下標]=new元素的資料型別[該行的總列數];
此時透過new的行的元素就有預設值,沒有透過new的行還是null,最後為元素賦值:
二維數組名[行下標][列下標]=值;
注意:不規則二維表,聲明後,初始化內部一維數組時不能簡寫。
//不規則二維表定義二維數組int[][]arr=newint[3][];//3行,未知的列//初始化二維數組內的元素值arr[0]=newint[ ]{1};//此處不能簡寫為arr[0]={1}arr[1]=newint[]{2,3};arr[2]=newint[]{4,5,6};
二維數組的遍歷和一維數組一樣,區別就是,首先要在外循環,遍歷每個一維數組,其一般格式如下:
for(inti=0;i<二維數組名.length;i++){for(intj=0;j<二維數組名[i].length;j++){System.out.print(二維數組名[ i][j]);}System.out.println();}