df du linux空間清理,檢視檔案大小
阿新 • • 發佈:2020-07-06
一、陣列概念
可以將多個同一資料型別的資料,儲存到同一個容器中
1. 格式
- 資料型別[] 陣列名=new 資料型別[元素個數]
- "資料型別"表示該陣列中可以存放哪一型別的資料
- "[]" 表示當前變數的資料型別為陣列型別
- "元素個數" 限制了當前陣列中可以存放的資料個數
- 建立陣列時,java系統自動設定各個元素的初始值,因此稱為靜態初始化
- 資料型別[] 陣列名=new 資料型別[]{元素1,元素2,...}
- 以上方式在建立陣列時,設定了各個元素的初始值,因此稱為動態初始化.
- 資料型別[] 陣列名={元素1,元素2,...}
- 以上方式在建立陣列時,設定了各個元素的初始值,因此稱為動態初始化.同時省掉了new關鍵字,直接建立陣列,稱為直接量語法
2. 陣列的操作
- 查詢陣列中元素:陣列名[索引]
- 修改陣列中元素:陣列名[索引]=值;
- 設定陣列中的元素:陣列名[索引]=值;
- 刪除陣列中的元素:陣列名[索引]=預設值;
二、 一維陣列
1. 宣告與初始化
正確的方式: int num;//宣告 num = 10;//初始化 int id = 1001;//宣告 + 初始化 int[] ids;//宣告 //1.1 靜態初始化:陣列的初始化和陣列元素的賦值操作同時進行 ids = new int[]{1001,1002,1003,1004}; //1.2動態初始化:陣列的初始化和陣列元素的賦值操作分開進行 String[] names = new String[5]; int[] arr4 = {1,2,3,4,5};//型別推斷
2. 一維陣列的引用
//陣列的角標(或索引從0開始的,到陣列的長度-1結束。
names[0] = "王銘";
names[1] = "王赫";
names[2] = "張學良";
names[3] = "孫居龍";
names[4] = "王巨集志";//charAt(0)
3. 陣列的屬性 length
System.out.println(names.length);//5 System.out.println(ids.length); 說明: 陣列一旦初始化,其長度就是確定的。arr.length 陣列長度一旦確定,就不可修改。
4. 一維陣列的遍歷
for(int i = 0;i < names.length;i++){
System.out.println(names[i]);
}
5.一維陣列元素的預設初始化值
- 陣列元素是整型:0
- 陣列元素是浮點型:0.0
- 陣列元素是char型:0或'\u0000',而非'0'
- 陣列元素是boolean型:false
- 陣列元素是引用資料型別:null
6.一維陣列的記憶體解析
三、二維陣列
1.如何理解二維陣列?
陣列屬於引用資料型別
陣列的元素也可以是引用資料型別
一個一維陣列A的元素如果還是一個一維陣列型別的,則,此陣列A稱為二維陣列。
2.二維陣列的宣告與初始化
正確的方式:
int[] arr = new int[]{1,2,3};//一維陣列
//靜態初始化
int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
//動態初始化1
String[][] arr2 = new String[3][2];
//動態初始化2
String[][] arr3 = new String[3][];
//也是正確的寫法:
int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
int[] arr5[] = {{1,2,3},{4,5},{6,7,8}};//型別推斷
3.如何呼叫二維陣列元素:
System.out.println(arr[1][0]);//2
System.out.println(arr[1][1]);//null
arr3[1] = new String[4];
System.out.println(arr3[1][0]);
System.out.println(arr3[0]);//
4.二維陣列的屬性:
System.out.println(arr4.length);//3
System.out.println(arr4[0].length);//3
System.out.println(arr4[1].length);//4
5.遍歷二維陣列元素
for(int i = 0;i < arr4.length;i++){
for(int j = 0;j < arr4[i].length;j++){
System.out.print(arr4[i][j] + " ");
}
System.out.println();
}
6. 二維陣列記憶體解析
四、陣列常見演算法
1. 楊輝三角
// 1. 初始化二維而陣列
int[][] arr1 = new int[10][];
for (int i = 0; i < arr1.length; i++) {
arr1[i] = new int[i + 1];
// 給每行首位元素賦值
arr1[i][0] = arr1[i][i] = 1;
// 給每行非首位元素賦值
for (int j = 1; j < arr1[i].length - 1; j++) {
arr1[i][j] = arr1[i - 1][j - 1] + arr1[i - 1][j];
}
}
// 遍歷二維陣列
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr1[i].length; j++) {
System.out.print(arr1[i][j] + "\t");
}
System.out.println();
}
2. 氣泡排序
int[] arr = new int[]{43,32,76,-98,0,64,33,-21,32,99};
//氣泡排序
for(int i = 0;i < arr.length - 1;i++){
for(int j = 0;j < arr.length - 1 - i;j++){
if(arr[j] > arr[j + 1]){
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for(int i = 0;i < arr.length;i++){
System.out.print(arr[i] + "\t");
}
五、運算元組的工具類
//1.boolean equals(int[] a,int[] b):判斷兩個陣列是否相等。
int[] arr1 = new int[]{1,2,3,4};
int[] arr2 = new int[]{1,3,2,4};
boolean isEquals = Arrays.equals(arr1, arr2);
System.out.println(isEquals);
//2.String toString(int[] a):輸出陣列資訊。
System.out.println(Arrays.toString(arr1));
//3.void fill(int[] a,int val):將指定值填充到陣列之中。
Arrays.fill(arr1,10);
System.out.println(Arrays.toString(arr1));
//4.void sort(int[] a):對陣列進行排序。
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
//5.int binarySearch(int[] a,int key)
int[] arr3 = new int[]{-98,-34,2,34,54,66,79,105,210,333};
int index = Arrays.binarySearch(arr3, 210);
if(index >= 0){
System.out.println(index);
}else{
System.out.println("未找到");
}
六、陣列中的常見異常
//1. 陣列角標越界的異常:ArrayIndexOutOfBoundsExcetion
int[] arr = new int[]{1,2,3,4,5};
// for(int i = 0;i <= arr.length;i++){
// System.out.println(arr[i]);
// }
// System.out.println(arr[-2]);
// System.out.println("hello");
//2.2. 空指標異常:NullPointerException
//情況一:
// int[] arr1 = new int[]{1,2,3};
// arr1 = null;
// System.out.println(arr1[0]);
//情況二:
// int[][] arr2 = new int[4][];
// System.out.println(arr2[0][0]);
//情況三:
String[] arr3 = new String[]{"AA","BB","CC"};
arr3[0] = null;
System.out.println(arr3[0].toString());