JAVA學習第四天
阿新 • • 發佈:2021-07-07
二維陣列、楊輝三角
一、今天學了什麼
1.二維陣列
必須注意動態初始化方式2的各種使用情況!
(1)宣告和初始化
int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};//靜態初始化,類似巢狀
int[][] arr4 = {1,2,3},{4,5},{6,7,8};//型別推斷
String[][] arr2 = new String[3][2];//動態初始化方式1
String[][] arr3 = new String[3][];//動態初始化方式2
注意:在宣告和初始化中,[]可以放在型別名後,也可以放在陣列名後。
(2)元素呼叫
System.out.println(arr1[0][1]);//2 System.out.println(arr2[1][1]);//null System.out.println(arr3[1][0]);//報錯,空指標異常。若要使用必須提前指定該陣列的
(3)獲取長度
System.out.println(arr1.length);//3
System.out.println(arr[0].length);//3
System.out.println(arr[1].length);//2
(4)遍歷陣列
for(int i = 0; i < arr1.length; i++) { for(int j =0; j < arr1[i].length; j++) { System.out.print(arr1[i][j] + " "); } }
//輸出為:
/*1 2 3
4 5
6 7 8*/
(5)陣列元素預設初始化值
int[][] arr5 = new int[4][3];
System.out.println(arr5[0]);//地址值(一維)
System.out.println(arr5[0][0]);//0
//int、String、float、double型別內層的都與int型別一致,與所對應一維陣列預設初始化值相同
System.out.println(arr5);//也是地址值(二維)這兩處地址不同
//但是必須要注意,使用第二種動態初始化方法時,輸出將於上述不同
double[][] arr6 = new double[4][];
System.out.println(arr6[1]);//null。因為其每一個外層都應該是一個數組,陣列屬於引用型別,引用型別的預設初始值為null!
System.out.println(arr6[1][0]);//報錯,空指標異常。
小總結:
針對動態初始化方式1:
外層:地址值;
內層:與一維陣列初始化相同。
針對動態初始化方式2:
外層:null;
內層:不能呼叫,否則報錯。
2.楊輝三角小練習:
列印一個10行的楊輝三角
程式碼如下:
int[][] num = new int[10][]; for(int i = 0; i < 10; i++) { num[i] = new int[i+1]; num[i][0] = 1; num[i][i] = 1; if(i > 1) { for(int j = 1; j < num[i].length-1; j++) { num[i][j] = num[i-1][j-1] + num[i-1][j]; } } } for(int i = 0; i < num.length; i++) { for(int j = 0; j < num[i].length; j++) { System.out.print(num[i][j]+" "); } System.out.println(); }