方法與陣列
方法
方法就是完成特定功能的程式碼塊;在很多語言裡面都有函式的定義,函式在Java中被稱為方法
格式: 修飾符 返回值型別 方法名(引數型別 引數名1,引數型別 引數名2…) throw 異常{
函式體;
return 返回值;
}
詳解
修飾符: 比如public、protected、預設、private、static、abstract
返回值型別: 基本資料型別、引用資料型別、void等
方法名: 符合命名規則的識別符號,駝峰命名
引數: 實際引數與形式引數;實際引數:就是實際參與運算的;形式引數: 就是定義在方法上的,用於接收實際引數
引數型別: 基本資料型別、引用資料型別
引數名: 變數名
函式體: 也叫方法體,完成功能的程式碼
return: 結束當前方法
返回值: 返回給呼叫者的結果
//第一步 程式從main方法開始執行 public static void main(String[] args) { // 第二步 定義兩個int型別的變數 int first = 10; int second = 20; // 第三步 呼叫方法 int subValue = sub(first, second); // 第七步 輸出方法返回的結果 System.out.println(subValue); } // 第四步 把實參傳遞給形參 public static int sub(int one, int two) { // 第五步 計算結果 // 第六步 返回結果 return one - two; }
方法注意事項
方法不呼叫不執行
方法與方法是平級關係,不能巢狀定義
方法定義的時候引數之間用逗號隔開
方法呼叫的時候不用在傳遞資料型別
如果方法有明確的返回值,一定要有return返回值
方法過載
在一個類中,允許存在一個以上的同名方法,只要它們的引數個數或者型別不同
特點: 與返回值無關,只看方法名和引數列表
在呼叫時,虛擬機器通過引數列表的不同來區分同名方法
陣列
陣列是儲存同一種資料型別多個元素的集合(容器);陣列可以儲存基本資料型別,也可以儲存引用資料型別
格式
資料型別[] 陣列名;或者 資料型別 陣列名[];
陣列的初始化
Java中的陣列必須先初始化,然後才能使用
為陣列中的陣列元素分配記憶體空間,併為每個陣列元素賦值
初始化方式
動態初始化 初始化時只指定陣列長度,自動分配初始值
格式:資料型別[] 陣列名 = new 資料型別[陣列長度]
例如: String[] strs = new String[10];定義了一個String型別的陣列,這個陣列中可以存放3個String型別的值
靜態初始化 初始化時指定陣列元素的初始值,由系統決定陣列長度
靜態初始化
初始化時指定每個陣列元素的初始值,自動分配長度
格式 陣列型別[] 陣列名 = new 資料型別[]{元素1,元素2,元素3,…}
例如: String[] strs = new String[]{“a”, “b”, “c”, “d”}或者String[] strs ={“a”, “b”, “c”, “d”} 定義了一個string型別的陣列,這個陣列中可以存放4個String型別的值
陣列常見的丟擲異常
陣列索引越界 ArrayIndexOutOfBoundsException 訪問到陣列不存的索引時
空指標異常 NullPointerException 陣列引用沒有指向實體,卻在操作實體中的元素時
Java中的記憶體分配
棧 儲存區域性變數(定義在方法中或者方法宣告上的變數)
堆 儲存new出來的東西
方法區
本地方法區 和系統相關
暫存器 CPU使用
堆記憶體的特點:
1 每一個new出來的東西都有地址值
2 每個變數都有預設值 byte、short、int、long ---0;float、double---0.0;char---‘\u0000’;boolean---false; 引用型別---null
3 使用完後就變成了垃圾,沒有立即回收,會在垃圾回收器空閒的時候回收
// 逆序 public static void main(String[] args) { int[] arr = {12, 13,14,15,16}; arrToString(arr); reverse(arr); arrToString(arr); } public static void arrToString(int[] arrs) { String print = "{"; for (int i = 0; i < arrs.length ; i++) { if (arrs.length - 1 == i) { print += arrs[i] + "}"; System.out.println(print); return; } print += arrs[i] + ","; } } public static void reverse(int[] arrS){ for (int i = 0; i < arrS.length / 2; i++) { int temp = arrS[i]; arrS[i] = arrS[arrS.length - 1 - i]; arrS[arrS.length - 1 - i] = temp;