###### 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;
}
}
```