Java基礎知識七——方法

weixin_33749242發表於2018-02-02

一、方法的概述

  方法其實就是完成特定功能的程式碼塊。
定義的格式:

修飾符 返回值型別 方法名(引數型別 引數1,引數型別,引數2,...){
    方法體;
    return 返回值;
}

格式解釋:
  修飾符:後面會說,目前先使用public static
  返回值型別:用於限定返回值的資料型別
  方法名:方便我們呼叫方法
  引數型別:用於限定呼叫方法是傳入的資料的資料型別
  引數名:用於接受呼叫方法是傳入的資料的變數
  方法體:完成特定功能的程式碼
  return 返回值:結束方法,並把返回值帶給呼叫者

二、方法的定義

  我們在寫一個方法前,一般要有兩個明確:

  •   返回值型別:其實就是要我們明確方法結果的資料型別
  •   引數列表:其實就是要我們明確有幾個引數參加,並且每個引數都是什麼資料型別的
    案例:求兩個資料之和
    /*
     * 兩個明確:
     *      返回值型別:int
     *      引數列表:int a,int b
     */
    public static int sum(int a,int b) {
        int c = a + b;
        return c;
    }

三、方法的呼叫

1、有返回值的呼叫

  有返回值的呼叫方法有三種:
  (1)直接呼叫,無意義
  (2)輸出呼叫,有意義,但是不夠好,因為我不一定非要把結果輸出
  (3)賦值呼叫,推薦方式
例:

public class MethodDemo1 {
    // 求和的方法
    public static int sum(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        // 單獨呼叫
        // sum(10,20);

        // 輸出呼叫
        // System.out.println(sum(10,20));

        // 賦值呼叫
        int s = sum(10, 20);
        // s+=100;
        System.out.println("s:"+s);
    }
} 
10374225-a3a3c6e41a1016e6.png
方法呼叫流程圖

2、沒有返回值的方法呼叫

  沒有返回值的方法呼叫只有一個方法,就是直接呼叫。
例:

public class MethodDemo2 {
    public static void print() {
        System.out.println("這個方法沒有返回值");
    }

     public static void main(String[] args) {
        print();
     }
} 

注意:
  如果一個方法沒有明確的返回值型別,也不能把返回值型別的地方空出來,這裡應該寫void表示該方法無返回值。

三、方法的過載

1、方法過載的概述

  在同一個類中,允許存在一個以上的同名方法,只要它們的引數個數或者引數型別不同即可。

2、方法過載的特點

  (1)方法名相同,引數列表不同。

  •   引數的個數不同。
  •   引數對應的資料型別不同。
      (2)方法過載與返回值無關。

注意事項:
  在呼叫方法的時候,java虛擬機器會根據方法名及引數列表的不同來區分方法。

案例:資料的求和

public class MethodDemo3 {
    public static void main(String[] args) {
        //定義兩個變數
        int a = 10;
        int b = 20;
        
        //求和
        int result = sum(a,b);
        System.out.println("result:"+result);
        
        //定義變數
        int c = 30;
        int result2 = sum(a,b,c);
        System.out.println("result2:"+result2);
    }
    
    //求三個資料的和

    public static int sum(int a,int b,int c) {
        return a + b + c;
    }
    
    //求兩個資料的和
    public static int sum(int a,int b) {
        return a + b;
    }
}

四、方法型別引數詳解

1、方法的引數是基本型別

  方法的引數是基本型別的時候,形式引數的改變不影響實際引數。
  形式引數:用於接收實際資料的變數
  實際引數:實際參與運算的變數
例:

public class MethodDemo4 {
    public static void main(String[] args) {
        // 定義變數
        int a = 10;
        int b = 20;
        System.out.println("a:" + a + ",b:" + b);// a:10,b:20
        change(a, b);
        System.out.println("a:" + a + ",b:" + b);// a:10,b:20
    }

    public static void change(int a, int b) { // a=10,b=20
        System.out.println("a:" + a + ",b:" + b);// a:10,b:20
        a = b; // a=20;
        b = a + b;// b=40;
        System.out.println("a:" + a + ",b:" + b);// a:20,b:40
    }

}
10374225-815a385f03872247.png
基本型別

2、方法引數是引用資料型別

  引用資料型別作為引數傳遞,形式引數的改變直接影響實際引數。
例:

public class MethodDemo5 {
    public static void main(String[] args) {
        int[] arr = { 1, 2, 3, 4, 5 };
        for (int x = 0; x < arr.length; x++) {
            System.out.println(arr[x]);//1,2,3,4,5
        }
        change(arr);
        for (int x = 0; x < arr.length; x++) {
            System.out.println(arr[x]);//1,4,3,8,5
        }
    }

    public static void change(int[] arr) {
        for (int x = 0; x < arr.length; x++) {
            if (arr[x] % 2 == 0) {
                arr[x] *= 2;
            }
        }
    }

}
10374225-0d0f53d471e2e5a0.png
引用型別

相關文章