數組
定義:相同數據類型的多個元素的容器。
我們通過下標的方式,試問數組中的元素,下標是從0開始的。數組是定長的,定義長度後無法更改;
定義的格式:
格式1:
格式2:數據類型 [ ] 數組名 = new 數據類型[長度];
定義一個指定的長度,且指定的具體內容的數組;數據類型 [ ] 數組名 = {元素1,元素2,元素3,元素4,..........,元素n};格式3:
僅定義變量名,不進行初始化.
數據類型 [ ] 數組名;
格式4:
數據類型 [ ] 數組名 = new 數據類型 [ ] { 元素1,元素2,元素3,元素4,..........,元素n};
數組的數據存儲:
數組名[下標] = 值;
將一個值,賦值給數組中的一個下標,如果原本有值,則覆蓋 !
數組長度的獲取:
格式:
int length = 數組名.length;數組的遍歷:
for(int i = 0;i<數組名.length;i++ ){
system.out.print(數組名[i]);
}
練習:
//已知一個空的int數組如下: // int[] arr = new int[10]; // 通過循環接收用戶輸入, 來爲這個數組中的十個下標賦值 ! //再通過循環遍歷, 將數組中的所有數字進行打印 import java.util.Scanner; public class Demo8{ public static void main(String[] args){ int[] arr = new int[10]; Scanner input = new Scanner(System.in); //通過循環接收用戶輸入, 來爲這個數組中的十個下標賦值 ! for(int i=0;i<10;i++){ System.out.println("請輸入第"+(i+1)+"數字:"); arr[i] = input.nextInt(); } for(int i=0;i<10;i++){ System.out.println(arr[i]); } } }
常見錯誤:
- 空指針異常NullPointException;
導致錯誤原因,在於使用了未賦值的數組;
- 數組下標越界:
錯誤原因:訪問的下標超出了邊界;練習
// 已知有兩個數組如下: int[] arr1 = {5,4,22,56,78,93}; int[] arr2 = new int[12]; // 通過代碼, 將arr1中的所有元素, 賦值給arr2對應的下標 ! (數組的複製) for(int i=0;i<arr1.length;i++){ arr2[i] = arr1[i]; } //我們都知道 數組的長度一經確定, 是無法改變的! //但是我們其實可以通過技術來變相的實現動態擴容 , 只需要修改上述練習即可: for(int i=0;i<arr1.length;i++){ arr2[i] = arr1[i]; } arr1 = arr2;
數組的動態擴容
原理:使用新的容量更大的數組,將原數組覆蓋!
數組元素的刪除,並移動位置
//已知一個數組如下: int[] arr = {11,22,33,44,55,66,77,88,99}; //請用戶輸入要刪除的下標 , 刪除這個下標對應的元素, 並將後續的數據依次向前移動 //代碼實現: import java.util.Scanner; public class Demo9{ public static void main(String[] args){ int[] arr = {11,22,33,44,55,66,77,88,99}; Scanner input = new Scanner(System.in); System.out.println("請輸入要刪除的元素的下標(0-8): "); int index = input.nextInt(); //從用戶輸入的下標+1位置開始 ,數據循環向前移動 , 使用覆蓋來完成數據的刪除 if(index>=0&&index<=8){ //------------------------------------------- //向前移動 for(int i=index;i<arr.length-1;i++){ arr[i] = arr[i+1]; } //最後一個賦值爲默認值, 表示數據刪除 arr[arr.length-1] = 0; //------------------------------------------- }else{ System.out.println("sb"); } } }