黑馬程序員--Java基礎學習筆記【重載、數組操作】

 

 ------Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流! -------    

 

  • 方法重載

同一個類中允許多個同名的方法存在,但參數列表不同

方法的重載和修飾符、返回值沒有關係

JVM 根據參數列表調用重載的方法

  • 數組概念         數據類型[] 數組名

存儲同一種數據類型的多個元素的集合,也可以看成是一個容器。

數組初始化 爲數組中的元素分配內存空間並賦值

         靜態初始化:在定義數組的同時,直接對數組中的元素賦值

                   數據類型[ ] 數組名 = new 數據類型[ ] {數組元素1, 數組元素2, 數組元素3...};

                   注意:靜態初始化不能指定數組長度

                   數據類型[] 數組名 = {數組元素1, 數組元素2, 數組元素3...};

         動態初始化:只指定數組的長度,由系統分配初始值

                   數據類型[ ] 數組名 = new 數據類型[數組長度]; // 數組長度 = 元素個數

                  動態初始化創建數組後,其元素的初始值:byteshortintlong0

float double 0.0boolean falsechar \u0000

                   引用類型的數組的元素的默認初始值都是 null

  • Java中數組的內存分配

         在堆中爲數組對象分配內存,在棧中爲引用(堆中對象的內存地址,即指針)分配內存。數組對象在堆中存儲,數組變量屬於引用類型,存儲數組對象的地址信息,指向數組對象。

說明: I:\傳智播客0807Java基礎班\day05\數組內存圖1.JPG

 

  • 棧內存和堆內存的區別

存儲內容:

         棧內存,存儲運行方法、局部變量

         堆內存,存儲的是實體、數組、對象

內存默認值:

         棧內存:變量沒有默認值,必須手動賦值

         堆內存,根據類型不同,都有默認值

生命週期:

         棧內存,使用完就被釋放,生命相對較短

         堆內存,使用完不會被立刻釋放,等待 JVM 回收,生命相對較長

 

  • 數組操作常見的兩個問題

  • 數組索引越界ArrayIndexOutOfBoundsException

訪問到了數組中不存在的索引時

2.空指針異常

NullPointerException數組引用沒有指向實體,卻在操作實體中的元素時

 

  • char 類型數組

輸出數組變量名的時候,出現的不是地址,而是數組中每個元素

println() 默認對 char 數組,進行自動遍歷

 

  • 數組的訪問

獲取數組的長度 length 屬性(final,其值不可改變)

通過下標訪問數組元素 0length-1

 

  • 數組的操作示例

 

數組遍歷(依次輸出數組中的每一個元素)

         int[] arr = new int[] { 2, 3, 5, 6 };

         for (int i = 0; i < arr.length; i++){

                   System.out.println(arr[i]);

}

 

數組獲取最值

         // 定義一個變量,記錄當前最大值

int max = arr[0];

for (int I = 1; i < arr.length; i ++) {

         if(max < arr[i]) {

                   max= arr [i];

         }

}

System.out.println(“max= ” + max);

 

// 定義一個變量,記錄當前最大值的索引

int maxIndex = 0;

for (int I = 1; x < arr.length; x++){

         if(arr[maxIndex] < arr[i]){

                   maxIndex= I;

}

}

System.out.println(“max= ” +arr[maxIndex]);

 

數組元素逆序

         // 利用最大索引和最小索引訪問數組元素,和臨時變量完成元素的位置交換

         for (int min = 0, max = arr.length – 1;min < max; min ++, max --) {

                   int temp = arr[min];

                   arr[min] = arr[max];

                   arr[max] = temp;

         }

         // 再遍歷輸出,查看逆置效果

         for (int i = 0; i < arr.length; i++){

                   System.out.println(arr[i]);

}

查找指定關鍵字

         // 查找成功,返回第一次出現的索引,否則返回負值

         int key = 5;

         for (int i = 0; i < arr.length; i++){

                   if (key == arr[i]){

                            return 1;

                   }

}

return -1;

  • 數據傳遞問題

基本類型傳數值,引用類型傳地址

 

引用類型的參數傳遞問題

         被調用函數參數是引用類型,則傳遞的就是內存地址

         實參和形參共享內存數據


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