Java關於方法的總結

方法

1.什麼是方法

Java 中的方法類似於 C 語言中的函數。方法(method)一定是和 類 關聯在一起的。方法存在的意義:

  1. 是能夠模塊化的組織代碼
  2. 做到代碼被重複使用,一份代碼可以在多個位置使用
  3. 讓代碼更好理解更簡單
  4. 直接調用現有方法開發,不必重複造輪子
    Java 中的方法的定義位置,可以放在調用代碼的上面,也可以放在下面。 Java 中也沒有“函數聲明”這樣的說法。

2.方法的定義

  1. 方法定義時, 參數可以沒有. 每個參數要指定類型
  2. 方法定義時, 返回值也可以沒有, 如果沒有返回值, 則返回值類型應寫成 void
  3. 方法定義時的參數稱爲 “形參”, 方法調用時的參數稱爲 “實參”。
  4. Java 的方法必須寫到類裏面
//方法定義
public static 方法返回值 方法名稱 ([參數類型 形參 ...]) {
	方法體代碼;
	[return 返回值];
}

3. 形參 和 實參 的關係

C 語言中 形參 是 實參 的一份拷貝
對於 Java 中同樣適用。
Java 是沒有指針的,但是有引用,引用相當於低配指針
Java 中的基本類型(int , float, double) 都不是引用
可以藉助 數組 來完成, Java 中的數組是引用類型
數組是引用類型,此時方法內部對數組的操作是能夠影響到方法外部的。

class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        swap(a, b);
        System.out.println("a = " + a + " b = " + b);
	}
    public static void swap(int x, int y) {
        int tmp = x;
		x = y;
		y = tmp;
	}
}
// 運行結果
a = 10, b = 20

原因是剛纔的代碼,沒有完成數據的交換
對於基礎類型來說,形參相當於實參的拷貝,即 傳值調用

4.沒有返回值的方法

方法的返回值是可選的,有些時候可以沒有的。
例:

class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        print(a, b);
	}
    public static void print(int x, int y) {
        System.out.println("x = " + x + " y = " + y);
	}
}

5.方法的重載

重載主要有兩種體現形式

  1. 方法名字相同,參數類型不同
  2. 方法名字相同,參數個數不同
    前提條件,這兩個方法要在同一個類中。
    兩個方法是否構成重載和方法的返回值類型無關。
    像有些方法,參數不同,但是方法體裏面的執行邏輯是完全一樣的,這時可以使用重載來處理,但是沒必要,我們還有更好的方法,“泛型”
    例:
class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int ret = addInt(a, b);
        System.out.println("ret = " + ret);
        double a2 = 10.5;
        double b2 = 20.5;
        double ret2 = addDouble(a2, b2);
        System.out.println("ret2 = " + ret2);
	}
    public static int addInt(int x, int y) {
        return x + y;
	}
    public static double addDouble(double x, double y) {
        return x + y;
	}
}

6.方法的遞歸

一個方法在執行過程中調用自身, 就稱爲 “遞歸”.
遞歸相當於數學上的 “數學歸納法”, 有一個起始條件, 然後有一個遞推公式。

例如, 我們求 N!
起始條件: N = 1 的時候, N! 爲 1. 這個起始條件相當於遞歸的結束條件. 遞歸公式: 求 N! , 直接不好求, 可以把問題轉換成 N! => N * (N - 1)!

例:

public static void main(String[] args) {
    int n = 5;
    int ret = factor(n);
    System.out.println("ret = " + ret);
	}
public static int factor(int n) {
    if (n == 1) {
	return 1; 
	}
	return n * factor(n - 1); // factor 調用函數自身
}
// 執行結果 ret = 120
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章