java 數組

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);
  
  // count是查詢到的指定元素個數,同時可以利用與循環中,找到對應的元素
  for (int i = 0; i < count; i++) {
   System.out.println(indexArr[i]);
  }
  
 }
 /**
  * 找到指定源數據數組中所有指定元素所在的下標位置,保存到indexArr中,並且返回值
  * 是找到的元素個數
  * 
  * @param arr 源數據數組,int類型
  * @param indexArr 找到的下標位置存儲數組,要求該數組的容量不得小於源數據容量
  * @param find 需要查詢的指定數據
  * @return 返回值大於0,找到的數據個數,沒有找到返回0
  */
 public static int allIndexOf(int[] arr, int[] indexArr, int find) {
  // 參數合法性判斷
  if (arr.length > indexArr.length) {
   System.out.println("Input Parameter is Invalid!");
   // 參數不合法,沒有找到數據
   return 0;
  }
  
  /*
   * 定義一個變量,
   *   1. 計數器,記錄找到的元素個數
   *   2. 尾插法當中下一次存放元素的位置
   */
  int count = 0;
  
  // 利用for循環遍歷整個源數據arr數組
  for (int i = 0; i < arr.length; i++) {
   // 找到了對應的元素,需要保存下標i
   if (find == arr[i]) {
    // 保存到indexArr數組中
    // 需要使用尾插法!!!保存下一次存放數據的位置
    indexArr[count] = i; 
    // 計數器 += 1 
    count += 1;
   }
  }
  
  return count;
 }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章