11. 方法 【連載 11】

11. 方法 【連載 11】

方法又稱爲功能函數,有時候我們需要在程序中反覆執行同一項任務,我們不需要反覆編寫完成該任務的代碼,而只需要調用該任務的方法,讓 Java 運行其中的代碼。方法可以使程序的編寫、閱讀、測試和修復變得非常容易。

從面向對象的角度理解,方法可以描述一類對象的行爲與功能。展現某個對象的行爲,調用該對象對應的方法就可以完成。

1. 定義方法

方法必須在一個類中定義,不能單獨存在。

public class Person {
  //定義一個打招呼的方法
  public static void greet() {
    System.out.println("Hello!");
  }
  public static void main(String[] args) {
     greet();//調用greet方法
  }
}

輸出結果:

Hello!

greet是定義在 Person 類中的一個類方法。

  • static 意思是這個方法屬於Person類, 而不是屬於Person類實例化的某個對象 . 可以在另外一個類裏面像這樣 Person.greet() 一樣直接用。static修飾的方法叫做類方法,類方法也稱爲靜態方法。
  • void 意思是這個方法沒有返回值。 在Java 中也可以給方法定義一個 返回值 ,這個需要在方法聲明
  • 這個方法沒有任何參數, 但是在其他場景Java方法可以有一個或多個參數

2. 傳遞參數

方法允許向它傳遞一些數據,即傳遞參數。這樣可以根據傳遞參數的不同,產生不同的結果。

向某人Say Hello

public class Person {
    public static void greet(String username) {
        System.out.println("Hello, " + username);
    }
    public static void main(String[] args) {
        greet("Tom");//調用greet方法,傳遞Tom字符串
        greet("Lily");//再次調用greet方法
        greet("Arvin");
    }
}

輸出結果:

Hello, Tom
Hello, Lily
Hello, Arvin
  • String username 定義方法傳遞參數爲一個String 類型的字符串,定義參數時必須聲明參數數據類型。參數可以傳遞Java 中任意數據類型
  • greet("Tom");調用greet方法並傳遞一個"Tom"字符串,方法調用時傳遞的參數類型必須和聲明方法參數的數據類型保持一致。
  • 方法可以重複被調用

傳遞多個參數:

public class Calculator {
    public static void add (int a, int b) {
        int sum = a + b;
        System.out.println("a + b = " + sum);
    }
    public static void main(String[] args) {
        add(1000,24);
    }
}

輸出結果:

a + b = 1024
  • 方法可以傳遞多個參數

3. 返回值

方法並非總是直接顯示輸出,相反,它可以處理一些數據,並返回一個或一組值。這些返回的值稱爲返回值

在方法中使用return語句將值返回到調用方法的代碼行。返回值可以將程序的大部分繁重工作轉移到方法中去完成,從而簡化主程序。

public class Calculator {
    public static int add (int a, int b) {
        int sum = a + b;
        return sum;
    }
    public static int multiply(int a, int b) {
        return a * b;
    }
    public static void main(String[] args) {
        int sum = add(1000,24);
        System.out.println("a + b = " + sum);
        int product = multiply(20,45);
        System.out.println("a * b = " + product);
    }
}

輸出結果:

a + b = 1024
a * b = 900
  • int add(int a, int b) 方法名之前必須聲明方法的返回值類型,比如 add 方法返回值爲int類型,沒有返回值時聲明爲 void
  • return語句必須在方法的結尾,之後不能有其他語句
  • return 可以返回任何類型的值(數值、數組、對象、集合、文本)。必須和方法聲明的返回值類型保持一致
  • return後面可以跟字面量(常量)、變量或者表達式
  • return也可以單獨使用,不跟任何表達式,表示立即結束當前方法的執行

瞭解前面規則之後,來個綜合練習實例:製作一個任務列表

public class Person {

    /**
     * 讀取輸入的任務
     * @return 返回數組
     */
    public static String[] todo() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入今天要完成的5件事兒: ");
        String[] todoArray = new String[5];
        int i = 0;
        while (true) {
            todoArray[i] = scanner.nextLine();
            i++;
            if (i == 5) {
                break;
            }
        }
        return todoArray;
    }

    /**
     * 打印數組
     * @param array
     */
    public static void printArray(String[] array) {
        for (int i = 0; i < array.length; i++) {
            System.out.println((i + 1) + " : " + array[i]);
        }
    }

    public static void main(String[] args) {
        //調用todo方法,獲取todo數組
        String[] todoArray = todo();
        System.out.println("嘿,你今天要完成以下任務:");
        //打印今天的任務
        printArray(todoArray);
    }
}

輸出結果:

請輸入今天要完成的 5 件事兒: 
讀書
寫作
做家務
購物
運動
嘿,你今天要完成以下任務:
1 : 讀書
2 : 寫作
3 : 做家務
4 : 購物
5 : 運動

4. 對象的方法

上面定義的一些方法都屬於靜態方法,也就是類的方法,屬於一個類。描述一個類的統一方法,不屬於某個實例對象。

對象的方法,又叫成員方法,它屬於一個對象實例,描述的是一個對象的行爲和功能。

public class Calculator {
    public int add (int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        //創建一個計算器的對象
        Calculator calculator = new Calculator();
        //調用這個計算機對象的方法
        int sum = calculator.add(1000,24);
        System.out.println("a + b = " + sum);
    }
}
  • add 方法是一個對象的方法,描述的是一個計算機的功能,不可以用static修飾,否則會變成類方法。
  • 對象的方法,屬於一個對象,必須先去創建該對象纔可以使用,對象的方法

關於類和對象更多的方法,在後面內容會介紹

方法的內容,先介紹到這兒,簡單總結:方法也稱之爲函數,直觀地理解,返回值就是函數的輸出,參數就是函數的輸入,方法中的語句就是函數的計算公式。
扣扣交流羣:468439140

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章