------Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流! -------
方法重載
同一個類中允許多個同名的方法存在,但參數列表不同
方法的重載和修飾符、返回值沒有關係
JVM 根據參數列表調用重載的方法
數組概念 數據類型[] 數組名
存儲同一種數據類型的多個元素的集合,也可以看成是一個容器。
數組初始化 爲數組中的元素分配內存空間並賦值
靜態初始化:在定義數組的同時,直接對數組中的元素賦值
數據類型[ ] 數組名 = new 數據類型[ ] {數組元素1, 數組元素2, 數組元素3...};
注意:靜態初始化不能指定數組長度
數據類型[] 數組名 = {數組元素1, 數組元素2, 數組元素3...};
動態初始化:只指定數組的長度,由系統分配初始值
數據類型[ ] 數組名 = new 數據類型[數組長度]; // 數組長度 = 元素個數
動態初始化創建數組後,其元素的初始值:byte、short、int、long爲0;
float 和double 爲0.0;boolean 爲false;char 爲\u0000。
引用類型的數組的元素的默認初始值都是 null
Java中數組的內存分配
在堆中爲數組對象分配內存,在棧中爲引用(堆中對象的內存地址,即指針)分配內存。數組對象在堆中存儲,數組變量屬於引用類型,存儲數組對象的地址信息,指向數組對象。
棧內存和堆內存的區別
存儲內容:
棧內存,存儲運行方法、局部變量
堆內存,存儲的是實體、數組、對象
內存默認值:
棧內存:變量沒有默認值,必須手動賦值
堆內存,根據類型不同,都有默認值
生命週期:
棧內存,使用完就被釋放,生命相對較短
堆內存,使用完不會被立刻釋放,等待 JVM 回收,生命相對較長
數組操作常見的兩個問題
數組索引越界ArrayIndexOutOfBoundsException
訪問到了數組中不存在的索引時
2.空指針異常
NullPointerException數組引用沒有指向實體,卻在操作實體中的元素時
char 類型數組
輸出數組變量名的時候,出現的不是地址,而是數組中每個元素
println() 默認對 char 數組,進行自動遍歷
數組的訪問
獲取數組的長度 length 屬性(final,其值不可改變)
通過下標訪問數組元素 0~length-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;
數據傳遞問題
基本類型傳數值,引用類型傳地址
引用類型的參數傳遞問題
被調用函數參數是引用類型,則傳遞的就是內存地址
實參和形參共享內存數據