數組和函數
一、數組
1. 數組基本概念
一維數組
元素類型[] 數組名 = new 元素類型[元素個數或數組長度]; 元素類型[] 變量名 = {元素1,元素2...}; 元素類型[] 變量名 = new 元素類型[]{元素1,元素2...};
二維數組
元素類型[][] 數組名 = new 元素類型[第一維長度][第二維長度];
數組常見異常
- 數組腳標越界異常(ArrayIndexOutofBoundsException):訪問到了數組中不存在的腳標時發生
- 空指針異常(NullPointerException):當引用沒有指向實體卻在操作實體中的元素時發生
2. 數組常見操作
2.1 遍歷
遍歷所有數組元素然後輸出
public static void printArray(int[] arr) { System.out.print("["); for(int x=0; x<arr.length; x++) { if(x == arr.length-1) { System.out.println(arr[x]+"]"); }else { System.out.println(arr[x]+", "); } } }
2.2 最值
最大值
public static int getMax(int[] arr) { int max = arr[0]; for(int x=1; x<arr.length; x++) { if(arr[x] > max) { max = arr[x]; } } return max; }
最小值
public static int getMin(int[] arr) { int min = arr[0]; for(int x=1; x<arr.length; x++) { if(arr[x] < min) { min = arr[x]; } } return min; }
2.3 逆序
把數組元素反轉後輸出
public static void reverse(int[] arr) { for(int x=0; x<arr.length/2; x++) { int temp = arr[x]; arr[x] = arr[arr.length-1-x]; arr[arr.length-1-x] = temp; } }
2.4 二分查找法
使用二分法查找數組元素,查找前數組一定是有序的
public static int halfSearch(int[] arr,int key){ int min,max,mid; min = 0; max = arr.length-1; mid = (max+min)/2; while(arr[mid]!=key){ if(key>arr[mid]){ min = mid + 1; } else if(key<arr[mid]) max = mid - 1; if(max<min) return -1; mid = (max+min)/2; } return mid;
}
二、函數
1. 函數基本概念
格式
修飾符 返回值類型 函數名(參數類型 形式參數1,參數類型 形式參數2,…){ 執行語句; return 返回值; }
修飾符
- static – 靜態的
- final – 最終的
- abstract – 抽象的
- synchronized – 同步的
- native – 本地的
當函數運算後,沒有具體的返回值時,這時返回值類型用一個關鍵字void來表示
void:代表函數沒有具體具體返回值的情況。當函數的返回值類型是void時,函數中的return語句可以省略不寫
如何定義一個函數?
- 明確函數返回值類型
- 明確參數類型和個數
2. 函數重載
重載條件
- 方法名相同
- 返回值可以相同也可以不同
- 參數列表不同,可以是參數個數不不同,參數類型不同
什麼時候用重載?
- 當定義的功能相同,但參與運算的未知內容不用,這時就定義一個函數名稱來表示該功能,且通過參數列表的不同來區分多個同名函數。重載與返回類型無關
3. 函數調用
- 一個類內部方法調用
- 非靜態方法內部調用非靜態方法
- 非靜態方法內部調用靜態方法
- 靜態方法內部調用非靜態方法
- 靜態方法內部調用靜態方法
- 不同類內部方法調用
- 不同類之間調用方法需要創建對象導包
4. 參數傳遞
- 值傳遞
- 參數原始值是不改變的
- 地址傳遞
- 在方法內部修改參數的值時,參數原始的值是改變的
- 應用場景
- 值傳遞
- 8中基本數據類型和String類型
- 地址傳遞
- 除了String類以外的所有複合型數據類型,包括引用類型。
- 值傳遞
三、Java內存
- 寄存器
- 本地方法區
- 方法區
- 棧:存儲的都是局部變量,只要數據完成運算就會被釋放
- 堆:用於存儲數組和對象,也就是實體