二維數組
筆記Notes
二維數組
二維數組聲明
二維數組靜態初始化與二位初始化
二維數組元素賦值與獲取
二維數組遍歷
二維數組內存解析
打印楊輝三角
Arrays工具類
數組中常見的異常
二維數組
二維數組的元素是一維數組
二維數組的聲明和初始化
String [][] persons;
String persons2[][];
String [] persons3[];
二維數組的初始化
//靜態初始化
persons = new String[][]{{"小龍哥","110"},{"小倉","119"},{"小強","120"}};
//聲明和初始化不能分開
int[][] numbers = {{1,2},{3,4},{5,6}};
//動態初始化
persons2 = new String3;
//3值得是二維數組長度,2指的是二維數組元素(一維數組)的長度
//創建一個長度爲3的二維數組,二維數組的元素爲null
persons3 = new String[3][];
persons3[0] = new String[2];
persons3[1] = new String[3];
獲取二維數組的值,元素的值
String aString = persons3[2][2];
int a = persons3.length;
int b = persons3[0].length;
遍歷二維數組的元素
//遍歷二維數組
for (int i = 0; i < numbers.length; i++) {
for (int j = 0; j < numbers[i].length; j++) {
System.out.print(numbers[i][j] + " ");
}
System.out.println();
}
二維數組內存解析
打印楊輝三角
使用二維數組打印一個 10 行楊輝三角。
【提示】
- 第一行有 1 個元素, 第 n 行有 n 個元素
- 每一行的第一個元素和最後一個元素都是 1
- 從第三行開始, 對於非第一個元素和最後一個元素的元素。即:
yanghuii = yanghuii-1 + yanghuii-1;
public class YangHui {
public static void main(String[] args) {
//創建二維數組
int[][] numbers = new int[10][];
//給二維數組的元素賦值
for (int i = 0; i < numbers.length; i++) {
//創建二維數組的元素(一維數組)
numbers[i] = new int[i + 1];
//給二維數組中的元素的第一個元素和最後一個元素賦值
numbers[i][0] = numbers[i][i] = 1;
//遍歷二維數組中的元素(一維數組),不包括第一個和最後一個
for (int j = 1; j < numbers[i].length - 1; j++) {
numbers[i][j] = numbers[i - 1][j] + numbers[i - 1][j - 1];
}
}
//遍歷二維數組
for (int i = 0; i < numbers.length; i++) {
for (int j = 0; j < numbers[i].length; j++) {
System.out.print(numbers[i][j] + " ");
}
System.out.println();
}
}
}
Arrays工具類使用
int[] ns = {5,2,30,4,1,90};
int[] ns2 = {5,2,3,4,1};
//比較兩個數組是否相等 : 比較的是內容,個數,順序
boolean equals = Arrays.equals(ns, ns2);
System.out.println(equals);
//輸出數組信息
String nsStr = Arrays.toString(ns);
System.out.println(nsStr);
//將指定的數值填充到數組中
Arrays.fill(ns, 100);
System.out.println(Arrays.toString(ns));
//對數組中的內容進行排序
Arrays.sort(ns);
System.out.println(Arrays.toString(ns));
//二分法查找 - 使用前必須先排序 - 如果找不到會返回負數
int index = Arrays.binarySearch(ns, 4);
System.out.println(index);
數組中常見的異常
//1.數組下角標越界 :ArrayIndexOutofBoundsException
int[] numbers = new int[2]; //索引值合理範圍 :0 ~ 長度-1
System.out.println(numbers[2]); //發生了異常
System.out.println(numbers[-1]); //發生了異常
//2.空指針異常 :: NullPointerException
String str = "aaa";
str = null;
System.out.println(str.toUpperCase());//發生了異常
String[] names = new String[2];
System.out.println(names[0].toUpperCase());//發生了異常
String[][] persons = new String[3][];
System.out.println(persons[0][0]); //發生了異常
System.out.println(persons[0].length); //發生了異常
習題:數組聲明
聲明:int[] x,y[]; 在給x,y變量賦值以後,以下選項允許通過編譯的是:
a ) x[0] = y; //類型不符,x[0]爲int類型,而y爲引用類型
b) y[0] = x; //可以
c) y0 = x; //類型不否,x爲引用類型,而y0爲int類型
d) x0 = y; //x爲一維數組
e) y0 = x[0]; //可以
f) x = y; //類型不符,一個是一維數組,一個是二維數組
提示:
一維數組:int[] x 或者int x[]
二維數組:int[][] y 或者 int[] y[] 或者 int y[][]
總結Summary
二維數組遍歷
二維數組內存解析
楊輝三角
Arrays工具類
數組常見異常