###### tags: `Java 學習筆記` # Java 學習筆記 - 4-1: 基本函式 Function ## 函式定義 把會重複的動作合併,把方法定義出來 函示在物件導向中隸屬於某一類別(Class): 如下方的 MainClass,故稱為成員函式(member function),又稱為方法(method) 通常一個功能由多種函式組成 ```java= public class MainClass { public static viod main(String[] args) { Scanner scan = new Scanner(System.in); int a; a = scan.nextInt(); int b = scan.nextInt(); } } ``` * nextInt() 就是一個方法 * 上面的 main 就是一個函式 * 函式不能定義在另一個函式裡面,只能定義在類別裡面 * 函式有兩個重要的動作: (但非必要) * 傳入 * 傳出 (如果沒有要回傳 在型別那邊寫 void) * 有 void 時直接寫 return 即可 * 呼叫一個 function 的時候會先宣告()的東西(如果有的話) ### 使用動機 可以方便設計程式、實作、運算 ## 如何寫函式 ```java= public static int[] f(int a, int b) { return a + 1; } ``` * public 為存取修飾詞 * static 靜態 * int 表示要回傳的型態,也可以是陣列 * f 為函式的名稱,只要不要用到保留字可隨意定義 * () 內代表的是參數,可傳入該函式的值,可設定一個以上且型別不同 * return 為回傳值的一種,一定要有任何一種回傳,不能有不回傳的可能性發生,需要回傳當初指定的型別 (除非是 void) * 要知道一個 function 有沒有回傳可以直接在編譯器中查詢 ```java= public class MainClass { public static viod main(String[] args) { int x = f(5); System.out.println(x); } public static int f(int a) { return a + 1; } } ``` 會回傳 6 ## 案例示範: 交換陣列的位置 ```java= public class MainClass { public static viod main(String[] args) { int arr[] = new int[5]; for (int = 0; int < arr.length; i++) { arr[i] = i + 1; } swap(arr, 1, 3); // 陣列位置1, 3交換位置 for (int = 0; i < arr.length; i++) { System.out.println(arr[i]); } } public static void swap(int[] arr, int index1, int index2) { int tmp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = tmp; } } ``` ## 案例示範: 輸入兩個數字代表某數的幾次方 ```java= public class MainClass { public static viod main(String[] args) { int a = 5; a = pow(a, 3); System.out.println(a); } public static int pow(int a, int b) { int result = a; for (int i = 0; i < b - 1; i++) { result *= a; } return result; } } ```