數組 用於存儲一組同一數據類型數據的容器 數組會對放入其中的數據自動編號,編號是從0開始的 下標 定義格式 數據類型[] 數組名 = new 數據類型[數組的大小]; 可以先聲明再初始化 int[] arr = new int[5]; 定義了一個最多能存儲5的整數的數組 arr[3] = 4; ar ...
數組
用於存儲一組同一數據類型數據的容器
數組會對放入其中的數據自動編號,編號是從0開始的---下標
定義格式
數據類型[] 數組名 = new 數據類型[數組的大小];---可以先聲明再初始化
int[] arr = new int[5];---定義了一個最多能存儲5的整數的數組
arr[3] = 4;
arr[3]---通過數組名[下標]的形式來獲取數組元素或者給對應的位置賦值
數據類型[] 數組名 = new 數據類型[]{元素1,元素2……};
int[] arr = new int[]{2,5,1,6,8};---在定義好數組中的初始元素的同時定義好了數組的大小,不能在改變大小
數據類型[] 數組名 = {元素1,元素2……};---不可以先聲明再初始化
int[] arr = {2,5,3,6,1,8,9};
記憶體
棧記憶體、堆記憶體、方法區、本地方法棧(和其他語言交互)、寄存器(彙編)
棧記憶體
可以用於存儲變數,棧記憶體對存入其中的變數不會自動賦值,變數在使用完成之後會立即移出棧記憶體釋放空間
堆記憶體
用於存儲對象的,堆記憶體對於存入其中的元素會自動的賦予初始值---byte/short/int-0,long-0L;float-0.0f,double-0.0,char- ‘\u0000’,boolean-false,引用數據類型的預設值都是null,對象使用完成之後不會立即移出堆記憶體,而是在不定的某個時刻被回收
數組的應用
1. 獲取數組元素---數組名[下標]
2. 獲取數組的長度---數組名.length
3. 遍曆數組---通過獲取對應下標來獲取對應位置上的元素----O(n)
for(int i : arr){----增強for迴圈。把數組中的每個元素作為單獨的變數來使用
System.out.println(i);
}
4. 數組元素排序
Arrays.sort(arr);---會自動對數組排序,預設是升序排列
5. 獲取數組元素的最值---遍歷
6. 獲取元素的位置---遍歷
如果元素有序,可以使用折半查找---O(log2n)
7. 數組的反轉
8. 數組的擴容--數組的複製
int[] arr = {1,2,4,6,1};
int[] arr2 = new int[8];
System.arraycopy(源數組,源數組中的起始下標,目標數組,存放的起始下標,複製的元素的個數);
源數組 = Arrays.copyOf(源數組,擴容之後的長度);
arr = Arrays.copyOf(arr,2);
int[] arr2 = new int[2];
if(擴容之後的長度 < arr.length){
System.arraycopy(arr,0,arr2,0,擴容之後的長度)
} else {
System.arraycopy(arr,0,arr2,0,arr.length)
}
arr = arr2;
註意:
如果下標超過範圍,編譯無錯,運行時會出現ArrayIndexOutOfBoundsException---下標越界異常