1. 程式人生 > 實用技巧 >java基礎筆記(八)——java方法

java基礎筆記(八)——java方法

什麼是方法

  • 方法是用來解決同一類問題,是一些有序語句的集合

  • 在設計方法時要保證方法的原子性,即一個方法只完成一個特定的功能,這樣便於後期的擴充套件

方法的定義

修飾符 返回值型別 方法名(形參型別 形參1,形參型別 形參2,...){方法體內容}

  • 修飾符:public static 最常用

  • 返回值型別:除了void型別外,指定其他返回值型別後,需要在方法體中return一個結果

  • 形參與實參的區別:

    • 形參:定義方法用,指名該方法處理的資料型別

    • 實參:程式執行過程中,實際呼叫的變數

值傳遞與引用傳遞

java是值傳遞,這句話是正確的

  • 值傳遞:對於基本資料型別而言,值傳遞傳遞的是真實內容的一個副本,對副本的操作不影響原內容,也就是無論怎麼操作形參,都不會影響到原來的內容。

  • 引用傳遞:引用傳遞中,形參實參都指向同一個物件在記憶體中的地址,對形參的操作會改變原內容。

  • 為什麼說java是值傳遞

    • 因為,對於引用資料型別而言,傳遞的是實參在記憶體中指向的地址,對實參進行操作雖然會改變原內容,但是實參傳遞的地址並沒有發生變化。所以說java本質上還是值傳遞。

方法過載

在一個類中,有兩個及以上的方法,出現方法名相同,引數列表不同(即引數列表唯一)的現象稱為方法過載。方法過載與方法的返回值型別無關,僅與方法名與引數列表有關。

可變引數

  • jdk5以後出現的,允許傳遞同一型別的可變引數給方法

  • 格式:在想要傳遞的型別後加”...“即可

  • 要求:一個方法中僅能傳遞一個可變引數,並且該可變引數只能是方法的最後一個引數。任何普通引數都必須在可變引數之前。

  • 案例排序:找最大數


    printMax(20,15,19,85,55);
    printMax(new double[]{1,2,3});

    }

    private static void printMax(double... numbers) {

    if (numbers.length == 0){
    System.out.println("資料還未傳遞");
    return;
    }

    double result = 0;
    //排序
    for (int i = 0; i < numbers.length; i++) {
    if (result < numbers[i]){
    result = numbers[i];
    }
    }
    System.out.println("最大數為:" + result);
    }

遞迴

  • 遞迴簡單的說就是自己呼叫自己

  • 遞迴包括兩個部分

    • 遞迴頭:什麼時候不呼叫自身方法。如果沒有遞迴頭,程式將陷入死迴圈

    • 遞迴體:什麼時候需要呼叫自身方法。

  • 使用遞迴的場景:

    • 遞迴雖然能能很方便的解決一些問題,但是僅限於一些資料量交少的情況。如果資料量過大,不建議使用遞迴,否則很容易造成棧空間的崩潰。

    • 案例:階乘

       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);
      }
      }