1. 程式人生 > 其它 >java方法的介紹以及運用

java方法的介紹以及運用

方法

  1. 定義:類似於其他語言中的函式,是一段用來完成特定功能程式碼片段,方法包含一個方法頭和一個方法體。

  2. 一個方法中所有部分:

    • 修飾符
    • 返回值型別
    • 方法名
    • 引數型別:
      1. 形式引數:用來定義方法的引數
      2. 實際引數:用來實際呼叫傳遞的引數
    • 方法體
  3. 方法的呼叫:

    • 物件名.方法名(實參列表)

    • 當方法返回是一個值時,方法呼叫常常被當做一個值

    • 當方法返回的是void,方法呼叫一定是一條語句。

      System.out.print("hello,man")

    • 例子:比較輸入的兩個數字大小:

      //比大小方法
      public static int max(int num1,int num2){
          int result = 0;
          if (num1==num2){
              System.out.println("兩次輸入大小相同");
              return 0;
          }
          if (num1>num2){
              result = num1;
          }else {
              result = num2;
          }
          return result;
      }
      public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
          System.out.println("請輸入第一個數");
          int num1 = scanner.nextInt();
          System.out.println("請輸入第二個數");
          int num2 = scanner.nextInt();
          int max = max(num1,num2);
          System.out.println("最大的數為:"+max);
      }
      
  4. 方法的過載

    • 過載就是在一個類中有相同的函式名稱,但是引數(形參不同)的引數。

    • 方法過載規則

      • 方法名稱必須相同
      • 引數列表必須不同,如(個數、型別、引數排列順序不同)
      • 方法的返回值型別可以相同也可以不同
      • 僅僅返回型別不同不足以稱為方法的過載
    • 實現理論:方法名稱相同時,編譯器通過呼叫方法的引數個數,引數型別等去逐個匹配,以選擇對應的方法,如果匹配失敗則編譯器報錯:

      //比大小方法
      public static int max(int num1,int num2){
          int result = 0;
          if (num1==num2){
              System.out.println("兩次輸入大小相同");
              return 0;
          }
          if (num1>num2){
              result = num1;
          }else {
              result = num2;
          }
          return result;
      }
      //引數型別不同
      public static double max(double num1,double num2){
          double result = 0;
          if (num1==num2){
              System.out.println("兩次輸入大小相同");
              return 0;
          }
          if (num1>num2){
              result = num1;
          }else {
              result = num2;
          }
          return  result;
      }
      public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
          System.out.println("請輸入第一個數");
          int num1 = scanner.nextInt();
          System.out.println("請輸入第二個數");
          int num2 = scanner.nextInt();
          int max = max(num1,num2);
          //double max = max(num1,num2);通過呼叫不同型別的引數,編譯器選擇相應的方法去執行 
          System.out.println("最大的數為:"+max);
      }
      
  5. 可變引數(不定項引數)

    • 在指定引數型別後加上省略號(...)

    • 一個方法中只能指定一個可變引數,且必須放在最末尾,其他任何引數必須在他之前宣告。

      //比大小方法
      public static void max( double... number) {//可變長引數
          if (number.length == 0) {
              System.out.println("你沒有輸出任何數");
              return;
          }
          double result = number[0];
          //排序
          for (int i = 0 ;i<number.length;i++){
              if (number[i]>result){
              result = number[i];
              }
          }
          System.out.println("最大的數為:"+result);
      }
      public static void main(String[] args) {
          max(34,35,2,8,99);//呼叫引數時,引數個數可以任意設定,他的本質就是陣列
         max(new double[]{1,5,2,4,9,});
      }
      
  6. 遞迴:(方法呼叫自己本身)

    • 例子:輸入一個數,輸出該數的階乘

      public static void main(String[] args) {
          Scanner scanner = new Scanner(System.in);
          int i = scanner.nextInt();
          System.out.println(f(i));//列印函式值
      }
      public static int f(int i){
          int resoult=0;
          if (i ==1){
              resoult=1;
          }else {
             resoult= i*f(i-1);//遞迴,當條件滿足時繼續呼叫f方法。
          }
          return resoult;
      }
      
    • 一般不建議用遞迴,使用的前提是我們呼叫函式時的基數小,比如上面例子中的i當i較小的時候使用,如果較大會佔用大量的記憶體。