10-方法

呆头尖瓜發表於2024-06-23

方法的定義及呼叫

  1. 方法是語句的集合,它們在一起執行一個功能,類似於函式
  2. 設計方法時儲存方法的原子性,一個方法只完成一個功能
  3. 方法命名規則:首字母小寫+駝峰
  4. 方法包含於類或物件中
  5. 方法在程式中被建立,在其他地方被引用
  • Java都是值傳遞
修飾符 返回值型別 方法名(引數型別 引數名){
    ...方法體
    return 返回值;
}
//修飾符可選
//return 0; 終止方法
    //main方法
    public static void main(String[] args) {
        int sum = add(1, 2);
        System.out.println(sum);
        test();
        System.out.println(add(1, 2, 3));
    }
    //加法
    //修飾符+static(使之成為類方法,以在主函式里呼叫) 返回值型別 方法名 (形參)
    public static int add(int a,int b){
        return a+b;
    }
    //過載
    public static int add(int a,int b,int c){
        return a+b+c;
    }

    public static void test(){
        for (int i = 1; i < 1000; i++) {
            if(i%5==0){
                System.out.print(i + "\t");//跳脫字元\t
            }
            if(i%(5*3)==0){//當i能被三個5整除的時候,即第三個數被輸出,需換行
                System.out.println();//空串代表換行
                //System.out.print("\n");
            }
        }
    }

方法過載

過載就是在一個類中,有相同的函式名稱,但形式不同的函式

規則:

  1. 方法名稱必須相同
  2. 引數列表必須不同(個數或型別或順序)
  3. 返回型別可以相同可以不同
        
        System.out.println(max(2, 3));//自動呼叫引數為int型別的max
        System.out.println(max(2.1, 3.2));//自動呼叫引數為double型別的max
    }
    //比大小
    public static int max(int a,int b ){
        return a>b? a:b;
    }
    //方法過載  函式名一樣 引數不同 ,呼叫時用什麼樣的引數就用什麼樣的方法
    public static double max(double a,double b ){
        return a>b? a:b;
    }

命令列傳參

  • 傳遞命令列引數給main()函式實現

可變引數

不定項引數

  • 在方法宣告中,在指定引數型別後加一個省略號(...)
  • 一個方法只能指定一個可變引數,它必須是方法的最後一個引數。
public class Demo04 {
    public static void main(String[] args) {
        //不用static宣告類方法  用物件呼叫方法
        Demo04 demo04 = new Demo04();//建立Demo04這個類的物件demo04
        //呼叫可變引數的方法
        demo04.test(1,2,3,4,5);
        demo04.test(new int[]{1,2,3});//用陣列丟進去也可以
    }
    //可變長引數  本質是陣列
    public void test(int ... i){
        System.out.println(i[0]);
        System.out.println(i[1]);
        System.out.println(i[2]);
        System.out.println(i[3]);
        System.out.println(i[4]);
    }
}

遞迴

遞迴就是A方法呼叫A方法,自己呼叫自己

遞迴結構包括兩個部分:

  • 遞迴頭:什麼時候不呼叫自身方法。若沒有頭,將陷入死迴圈
  • 遞迴體:什麼時候需要呼叫自身方法。

java使用是棧機制,對於一些巢狀層次比較深的演算法,遞迴就會帶來大量函式呼叫,產生很多格外時間開銷,甚至崩潰。(能不用遞迴就不用遞迴)

    //階乘
    public static int fun(int n){
        if(n==1){
            return 1;
        }else {
            return n*fun(n-1);
        }
    }

相關文章