Java程式設計基礎05——方法(函式)

扎瓦發表於2019-01-19

1.方法概述和格式說明

  • A:為什麼要有方法:提高程式碼的複用性
  • B:什麼是方法:完成特定功能的程式碼塊。
  • C:方法的格式

       修飾符 返回值型別 方法名(引數型別 引數名1,引數型別 引數名2...) {
       方法體語句;
       return 返回值; 
       } 
  • D:方法的格式說明

    • 修飾符:目前就用 public(許可權修飾符) static(狀態修飾符)。後面我們再詳細的講解其他的修飾符。
    • 返回值型別:就是功能(方法)結果的資料型別。void(沒有返回值型別),返回值決定返回值型別;
    • 方法名:符合命名規則即可。方便我們的呼叫。main(主要的)
    • 引數:

      * 形式引數;就是方法定義的,用於接收實際引數的。 (a,b)
      * 實際引數:就是實際參與運算的。(10,20)
      
    • 引數型別:就是引數的資料型別(基本資料型別:四類八種)
    • 引數名:就是變數名(合法的識別符號)
    • 方法體語句:就是完成功能的程式碼。(System.out.println(“Method”);)
    • return:結束方法的。
    • 返回值:就是功能的結果,由return帶給呼叫者:返回值是什麼型別,返回值型別就是該型別。 void可省略。
public class JavaMethod {
        public static void main(String args []){
                System.out.println("Method");
        }
}

2.方法之求和案例及其呼叫(方法的注意事項)

  • A:寫一個方法:1,明確返回值型別2,明確引數列表
  • B:案例:求兩個資料之和的案例
  • C:方法呼叫圖解
  • 一個類如果有主方法,我們稱之為測試類
  • D:方法呼叫(有具體返回值)

    • a:單獨呼叫,一般來說沒有意義,所以不推薦。
    • b:輸出呼叫,但是不夠好。因為我們可能需要針對結果進行進一步的操作。
    • c:賦值呼叫,推薦方案。
  • E:案例演示

    • a:方法不呼叫不執行
    • b:方法與方法是平級關係,不能巢狀定義
    • c:方法定義的時候引數之間用逗號隔開
    • d:方法呼叫的時候不用在傳遞資料型別
    • e:如果方法有明確的返回值,一定要由return帶回一個值
public class JavaMethod {
    public static void main(String args []){
        int sum = add(10,20); //第一步:賦值呼叫,呼叫了add方法,並傳入了實際引數10,20分別傳給形式引數,將sum賦值給s
        System.out.println("sum = " + sum); //第五步:上下兩個方法中的sum非同一個sum,不能互相訪問     
        //add(30,40);        //單獨呼叫,一般來說沒有意義,所以不推薦。
        //System.out.println(add(30,40));   //輸出呼叫,一般不推薦
        int sum2 = add(30,40);
        System.out.println("sum2 = " + sum2);
    }
    //返回值型別int;明確引數列表int a,int b
    public static int add(int a,int b) {    //第二步:將10和20,分別傳給a,b
        //int sum = a + b;           //第三步:執行語句:將a和b相加後的結果,賦值給sum
        //return sum;            //第四步:由return將sum返回給呼叫者
        return a + b;
    }
}

3.方法的練習

  • A:案例演示

    • 需求:鍵盤錄入兩個資料,返回兩個數中的較大值
import java.util.Scanner;    
public class JavaMethod {
    public static void main(String args []){
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入第一個整數");
        int x = sc.nextInt();
        System.out.println("請輸入第二個整數");
        int y = sc.nextInt();

        int max = getMax(x,y);
        System.out.println("max = " + max);
    }
    //返回值型別int;引數列表int a,int b
    public static int getMax(int a,int b) {
            int max = (a > b)? a : b;
            return max;
            //return a > b ? a : b;
    }
}
  • B:案例演示

    • 需求:鍵盤錄入兩個資料,比較兩個數是否相等
      import java.util.Scanner;
      public class JavaMethod {

      public static void main(String args []){
          Scanner sc = new Scanner(System.in);
          System.out.println("請輸入第一個整數");
          int x = sc.nextInt();
          System.out.println("請輸入第二個整數");
          int y = sc.nextInt();
          boolean b = isEquals(x,y);
          System.out.println(b);
      }
      //返回值型別boolean;引數列表int a,int b
      public static boolean isEquals(int a,int b) {   //isEquals是否相等
          return a == b;
      }

      }

4.方法之輸出矩形星形及其呼叫

  • A:案例演示

    • 需求:根據鍵盤錄入的行數和列數,在控制檯輸出矩形星形
  • B:方法呼叫:(無具體返回值型別的,用void來接收)

    • 單獨呼叫
    • 輸出呼叫(錯誤)
    • 賦值呼叫(錯誤)
    • ~注意:如果返回值型別是void,return可以省略,即使省略,系統也會預設給加上,形式是: return;
import java.util.Scanner;
class MethodDemo3 {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("請輸入行數:");
                int row = sc.nextInt();
                System.out.println("請輸入列數:");
                int column = sc.nextInt();
 
                printStar(row,column);    //返回值型別是void的方法,要單獨呼叫
                //void v = printStar(row,column);   //賦值呼叫不可以
                //System.out.println(printStar(row,column));  //輸出呼叫也是不可以的void
        }
        /*
        在控制檯輸出列印矩形星型
        1.明確返回值型別(因為是在控制檯列印輸出,經分析沒有具體的返回值型別) void
        2.明確引數列表 int a,int b
        */
        public static void printStar(int a,int b) {
                for (int i = 1;i <=a ; i++ ) {    //外迴圈控制行數
                        for (int j = 1;j <= b ;j ++ ) { //內迴圈控制列數
                                System.out.print("*");
                        }
                        System.out.println();
                }
                return;
        }
}

5.方法的練習

  • A:案例演示

    • 需求:根據鍵盤錄入的資料輸出對應的乘法表
import java.util.Scanner;
class MethodDemo4 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入一個整數,範圍在1-9");
        int num = sc.nextInt();
        /*
        1.明確返回值型別 void
        2.引數列表 int a 
        */
        print99(num);
        public static void print99(int a) {
            for (int i = 1;i <= a ; i ++ ) {
                for (int j = 1; j <= i ; j ++ ) {
                    System.out.print(j + "*" + i + "=" + j * i + "	");
                }
                System.out.println();
            }
        }
}

6.方法過載概述和基本使用

A:方法過載概述

* 求和案例
    * 2個整數
    * 3個整數
    * 4個整數

B:方法過載:

* 在同一個類中,方法名相同,引數列表不同。與返回值型別無關。

* 引數列表不同:
    * A:引數個數不同
    * B:引數型別不同
    * C:引數的順序不同(算過載,但是在開發中不用)
    
class OverLoad{
    public static void main(String[] args) {
        int sum1 = add(10,20);
        System.out.println(sum1);
        int sum2 = add(10,20,30);
        System.out.println(sum2);
        
        double sum3 = add(11.2,15.2,18.5);
        System.out.println(sum3);
    }
    /*
    求兩個整數的和
    1.返回值型別  int
    2.引數列表 int a,int b
    */
    public static int add(int a,int b) {
    return a + b;
    }

    /*
    求兩個整數的和
    1.返回值型別  int
    2.引數列表 int a,int b,int c
    */
    public static int add(int a,int b,int c) {
    return a + b + c;
    }
    /*
    求兩個小數的和
    1.返回值型別  double
    2.引數列表 double a,double b,double c
    */
    public static double add(double a,double b,double c) {
    return a + b + c;
    }
}

7.方法過載練習比較資料是否相等

A:案例演示

* 需求:比較兩個資料是否相等。
* 引數型別分別為兩個int型別,兩個double型別,並在main方法中進行測試

class OverLoad4{
    public static void main(String[] args) {
        boolean b1 = isEquals(10,10);
        System.out.println(b1);
    }
    /*
    求兩個整數的和
    1.返回值型別  boolean
    2.引數列表 int a,int b
    */
    public static boolean isEquals(int a,int b) {
    return a == b;
    }
    /*
    求兩個整數的和
    1.返回值型別  boolean
    2.引數列表 double a,double b
    */
    public static boolean isEquals(double a,double b) {
    return a == b;
    }
}

相關文章