1.數組的定義
數據類型[ ] 數組名 = new 數據類型[容量];
賦值左側
數據類型:
告知編譯器,當前數組中能夠保存的數據類型到底是什麼?並且在確定數據類之後,整個數組
中保存的數據類型無法修改!!!
[]:
1. 告知編譯器這裏定義的是一個數組類型數據。
2. 明確告知編譯器,數組名是一個【引用數據類型】
數組名:
1. 操作數據非常重要的數據!!!
2. 數組名是一個【引用數據類型】
數據類型:
前後呼應,告知編譯器這裏支持存儲的數據類型到底是什麼?
[容量]:
容量==> Capacity
告知編譯器,當前數組中能夠存放的對應數據類型的數據,最大存儲多少個!!
【注意】
一旦確定容量,針對於當前數組,後期容量無法修改
2.數組的下標
規定
數組中的下標是從0開始,到數組的容量-1
例如:
數組容量10
有效下標範圍:0 ~ 9
超出有效下標範圍,都是無效的下標
3.數組內存分析圖
因爲數組還有length屬性,所以上圖中數組所佔的內存堆區的大小是大於40的
4.數組中的內存轉轉移問題
圖中 arr1 = arr2;
其實是將 arr2 的地址賦值給 arr1,所以導致數組arr1 會指向 arr2數組所在的堆區地址,所以之後對
數組arr1 的操作一樣會影響到數arr2;
5.數組案例
找出指定元素在指定數組中所有下標位置
6.代碼
public class Demo3 {
public static void main(String[] args) {
int[] arr = {5, 3, 5, 7, 5, 1, 3, 5, 7, 9};
int[] indexArr = new int[arr.length];
int count = allIndexOf(arr, indexArr, 5);
for (int i = 0; i < count; i++) {
System.out.println(indexArr[i]);
}
}
public static int allIndexOf(int[] arr, int[] indexArr, int find) {
if (arr.length > indexArr.length) {
System.out.println("Input Parameter is Invalid!");
return 0;
}
int count = 0;
for (int i = 0; i < arr.length; i++) {
if (find == arr[i]) {
indexArr[count] = i;
count += 1;
}
}
return count;
}
}