1. 程式人生 > 其它 >2021-10-21 集訓補題

2021-10-21 集訓補題

Java 方法

什麼是方法

方法是什麼?

  1. System.out.println()是什麼?
  • System是一個類,out是一個物件,println是方法
  1. 方法是語句的集合,一起執行一個功能
  • 方法是解決一類問題的步驟的有序集合
  • 方法包含於類和物件中
  • 方法在程式中建立,在其他地方被引用
  1. 設計原則:
  • 方法要有原子性,一個方法儘可能完成一個功能
public class Demon01 {
    //main方法
    public static void main(String[] args) {
        System.out.println(add(3,5));
    }
    //加法
    public static int add(int a, int b){
        return a+b;
    }
}

方法的定義和呼叫

方法的定義

  1. java的方法即其他語言的函式。
  2. 方法包含一個方法頭和方法體,下面是全部部分:
  • 修飾符:static等
  • 返回值型別
  • 方法名:遵守駝峰命名
  • 引數型別:引數是佔位符,傳遞的值是實參,形參只是用於佔位的。
  • 方法體
  • 返回值

方法的呼叫

  1. 呼叫方法:物件名.方法名(實參列表)
  2. Java支援兩種呼叫:
  • 有返回值直接當成一個值使用
  • 無返回值就當成一個語句使用
  1. 值傳遞(Java沒有指標操作)和引用傳遞
public class Demon02 {
    public static void main(String[] args) {
        int res = max(10, 20);
        System.out.println(res);
        
    }
    public static int max(int a, int b){
        int res = -1;
        if(a>=b)
            res = a;
        else
            res = b;
        return res;
    }
}

方法的過載

  1. 過載:
  • 在同一個類中,有同名但是不同引數/引數型別的方法
  1. 過載的規則:
  • 方法名稱必須相同
  • 引數列表必須不同(引數型別,引數個數)
  • 方法返回型別可以相同也可以不同
  • 僅僅返回型別不同不足以過載
public class Demon02 {
    public static void main(String[] args) {
        int res = max(10, 20);
        System.out.println(res);

    }
    public static int max(int a, int b){
        int res = -1;
        if(a>=b)
            res = a;
        else
            res = b;
        return res;
    }
    //方法過載
    public static double max(double a, double b){
        double res = -1;
        if(a>=b)
            res = a;
        else
            res = b;
        return res;
    }
}

命令列傳遞引數

  1. 有時候希望執行一個程式再傳遞給他訊息,要依靠傳遞命令列引數給main()函式實現
  2. 需要編譯後用命令列執行傳參
public class Demon03 {
    public static void main(String[] args) {
        //args.length
        for(int i=0;i<args.length;i++){
            System.out.println("args["+ i +"]:" + args[i]);
        }
    }
}

可變引數

  1. 在方法宣告中,在指定引數型別後加一個省略號(...)
  2. 一個方法中只能指定一個可變引數
  3. 可變長引數只能在引數表中最後一個引數
public class Demon04 {
    public static void main(String[] args) {
        Demon04 demon04 = new Demon04();
        demon04.test(1,2,3,4,5);
    }
    public void test(int... i){
        System.out.println(i);
    }
}

遞迴講解

  1. 遞迴就是方法本身呼叫方法自己。
  2. 利用遞迴可以用簡單的程式來解決一些複雜的問題。
  3. 遞迴包括兩個部分:
  • 遞迴頭:遞迴什麼時候開始
  • 遞迴尾:遞迴什麼時候結束
  1. 遞迴的實現是通過棧實現的,過深會造成巨大開銷
public class Demon05 {
    public static void main(String[] args) {
        fun(5);
    }
    public static int fun(int n){
        if(n==1){
            return 1;
        }else{
            return fun(n-1)*n;
        }
    }
}