JavaSE-方法

何謂方法

比如之前用到的 System.out.println();

System爲一個類;out爲這個類的一個輸出對象;println()爲這個對象的方法

調用System類中out輸出對象的println方法

Java方法是語句的集合,他們在一起執行一個功能

方法是解決一類問題的步驟的有序組合

方法包含在類或對象中

方法在程序中被創建,在其他地方被引用

方法的本意是功能塊,就是實現某個功能的語句塊的集合。我們設計方法的時候,最好保持方法的原子性,即一個方法只完成一個功能,以便於後期的擴展。

命名規則:首字母小寫,駝峯命名

public static void main(String[] args) {
        int sum = add(1, 2);
        System.out.println(sum);

    }
    public static int add(int a, int b){
        return a+b;
    }

方法的定義

Java的方法類似於函數,用來完成特定功能的代碼片段。

方法包含一個方法頭和方法體

修飾符:修飾符,可選,告訴編譯器如何調用方法。定義了該方法的訪問類型。

返回值類型:方法可能會返回值,returnValueType是方法返回值的數據類型。有些方法執行所需操作,但沒有返回值,這時返回值類型也就是returnValueType是關鍵字void

方法名:是方法的實際名稱。方法名和參數表共同構成方法簽名。

參數類型:參數像是一個佔位符。當方法被調用時,傳遞值給參數。這個值被稱爲實參或變量。參數列表是指方法的參數、順序和參數的個數。方法是可選的,方法可以不包含任何參數。

形式參數:在方法被調用時用於接收外界輸入的數據。

實參:調用方法時實際傳給方法的數據。

方法體:方法體包含具體的語句,定義該方法的功能。

修飾符	返回值類型	方法名(參數類型	參數名){
		方法體
		...
		return 返回值;
}

方法的調用

調用方法:對象名.方法名(實參列表)

Java支持兩種調用方法的方式,根據方法是否有返回值來選擇。

return不僅可以返回值,同樣可以結束這個方法。例:return 0;結束當前方法。

當方法返回一個值的時候,方法調用通常被當作一個值賦值給一個變量。

int larger = max(30, 40);

當方法返回值爲void時,方法調用一定是一條語句

System.out.println("Hello, Zh1z3ven!");

方法重載

重載就是在一個類中,有相同的函數名稱,但形參不同的函數。

方法重載的原則:

  • 方法名稱必須相同
  • 參數列表必須不同(個數不同、或類型不同、參數排列順序不同等)
  • 方法的返回類型可以相同也可以不相同
  • 僅僅返回類型不同不足以成爲方法的重載

實現原理:方法名稱相同時,編譯器會根據調用方法的參數個數、參數類型等去逐個匹配,以選擇對應的方法,如果匹配失敗,則編譯器報錯。

public static void main(String[] args) {

        double max = max(10.0, 20.0);
        int max2 = max(10, 20);
        System.out.println(max);
        System.out.println(max2);
    }

    public static int max(double num1, double num2){

        double result = 0;

        if (num1==num2){
            System.out.println("num1==num2");
            return 0; //終止方法
        }

        if (num1>num2){
            result = num1;
        }else {
            result = num2;
        }


        return result;
    }

    public static int max(int num1, int num2){

        int result = 0;

        if (num1==num2){
            System.out.println("num1==num2");
            return 0; //終止方法
        }

        if (num1>num2){
            result = num1;
        }else {
            result = num2;
        }


        return result;
    }

命令行傳參

main函數命令行傳參

注意IDEA裏不能運行,需要在項目src目錄下運行編譯好的class文件

public static void main(String[] args) {
        // 數組長度
        for (int i=0;i < args.length; i++){
            System.out.println("args[" + i + "]: " + args[i]);
        }

    }

image-20210607201142022

可變參數

JDK1.5開始,Java支持傳遞同類型的可變參數給一個方法。

在方法聲明中,在制定參數類型後加一個省略號(...)

一個方法中只能制定一個可變參數,他必須是方法的最後一個參數。任何普通參數必須在他之前聲明。

就是當你定義一個方法時,你並不確定要傳遞多少個某一數據類型的參數給該方法,就可以用可變參數,相當於讓傳遞的參數的個數爲一個不確定的值。

public class Demo04 {
    public static void main(String[] args) {
        Demo04 demo04 = new Demo04();
        demo04.test(1,2,3,4,5,6);


    }
		// 注意相同類型參數定義,可變參數一定要在最後面定義
    public void test(int x, int... i){
        for (int j=0;j<i.length;j++){
            System.out.println(i[j]);
        }

    }

}

遞歸

方法A調用自身。

遞歸結構包括兩個部分

遞歸頭:什麼時候不調用自身方法。如果沒有頭,將陷入死循環

遞歸體:什麼時候需要調用自身方法。

因爲Java是棧機制,先進後出,當遞歸次數很大時會很佔內存,所以能不用遞歸就不用遞歸。

public static void main(String[] args) {
        System.out.println(f(5));
    }

    public static int f(int n){
        if (n==1){
            return 1;
        }else {
            return n*f(n-1);
        }
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章