二維數(shù)組的定義
A 二維數(shù)組的作用
要統(tǒng)計(jì)一個(gè)學(xué)校各個(gè)班級(jí)學(xué)生的考試成績,又該如何實(shí)現(xiàn)呢?
這時(shí)就需要用到多維數(shù)組,多維數(shù)組可以簡單地理解為在數(shù)組中嵌套數(shù)組。
B 定義格式
a 第一種定義格式:
int[][] arr = new int[3][4];
上面的代碼相當(dāng)于定義了一個(gè)3*4的二維數(shù)組
即二維數(shù)組的長度為3,二維數(shù)組中的每個(gè)元素又是一個(gè)長度為4的數(shù)組
b 第二種定義格式
int[][] arr = new int[3][];
第二種方式和第一種類似,只是數(shù)組中每個(gè)元素的長度不確定
c 第三種定義格式
int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};
二維數(shù)組中定義了三個(gè)元素,這三個(gè)元素都是數(shù)組
分別為{1,2}、{3,4,5,6}、{7,8,9}
二維數(shù)組元素的訪問
A: 二維數(shù)組的訪問
class ArrayDemo08 {
public static void main(String[] args){
//定義二維數(shù)組的方式
int[][] arr = new int[3][4];
System.out.println( arr );
System.out.println("二維數(shù)組的長度: " + arr.length);
//獲取二維數(shù)組的3個(gè)元素
System.out.println( arr[0] );
System.out.println( arr[1] );
System.out.println( arr[2] );
System.out.println("打印第一個(gè)一維數(shù)組的元素值");
System.out.println( arr[0][0] );
System.out.println( arr[0][1] );//訪問的為二維數(shù)組中第1個(gè)一維數(shù)組的第2個(gè)元素
System.out.println( arr[0][2] );
System.out.println( arr[0][3] );
System.out.println("打印第二個(gè)一維數(shù)組的元素值");
System.out.println( arr[1][0] );
System.out.println( arr[1][1] );
System.out.println( arr[1][2] );
System.out.println( arr[1][3] );
System.out.println("打印第三個(gè)一維數(shù)組的元素值");
System.out.println( arr[2][0] );
System.out.println( arr[2][1] );
System.out.println( arr[2][2] );
System.out.println( arr[2][3] );
}
}
二維數(shù)組內(nèi)存圖
A: 二維數(shù)組內(nèi)存圖
舉例:int[][] arr = new int[3][2];
外層數(shù)組長在內(nèi)存開辟連續(xù)的3個(gè)大的內(nèi)存空間,每一個(gè)內(nèi)存空間都對(duì)應(yīng)的有地址值
每一個(gè)大內(nèi)存空間里又開辟連續(xù)的兩個(gè)小的內(nèi)存空間.
二維數(shù)組的定義和訪問
A: 二維數(shù)組的定義和訪問
格式1:
int[][] arr = new int[3][]; 不推薦
格式2
int[][] arr = {{1,2,4},{4,7},{0,9,3}};
B: 二維數(shù)組的訪問
舉例:int[][] arr = {{1,2,4},{5,8,7},{0,9,3}};
想要打印數(shù)組中7這個(gè)元素需要先找到大的元素索引{5,7} 索引為2 ,在找7在{5,7}中的索引2
那么結(jié)果為 arr[2][2]? 第一個(gè)[2]代表大數(shù)組中{5,8,7}這個(gè)元素索引
第二個(gè)[2]代表{5,8,7}中7元素的索引
二維數(shù)組的遍歷
A:二維數(shù)組遍歷
int[][] arr = {{1,2,4},{4,7},{0,9,3}};
先使用for循環(huán)遍歷arr這個(gè)二維數(shù)組,得到每一個(gè)元素為arr[i]為一維數(shù)組
再外層for循環(huán)中嵌套一個(gè)for循環(huán)遍歷每一個(gè)一維數(shù)組arr[i],得到每一元素
B:舉例:遍歷二維數(shù)組
public class ArrayArrayDemo_2{
public static void main(String[] args){
int[][] arr = { {1,2,3},{4,5},{6,7,8,9},{0} };
//外循環(huán),遍歷二維數(shù)組
for(int i = 0 ; i < arr.length ;i++){
//內(nèi)循環(huán),遍歷每個(gè)一維數(shù)組 arr[0] arr[1] arr[i]
for(int j = 0 ; j < arr[i].length; j++){
System.out.print(arr[i][j]);
}
System.out.println();
}
}
C:二維數(shù)組累加求和
class ArrayDemo09 {
public static void main(String[] args){
int[][] arr2 = { {1,2},{3,4,5},{6,7,8,9,10} };
int sum2 = 0;
for (int i=0; i