方法(函式)的定義與引數

weixin_33850890發表於2018-11-25

方法(函式)定義

方法(函式)格式:
@1、public 訪問許可權修飾符,公共的,誰都可以引用
@2、static 靜態修飾符,描述的方法可以直接呼叫
@3、void  表示返回值為空,即無返回值
@4、getName 方法名即函式名,命名規範:見名知意,首字母小寫,遵守駝峰命名法

public static void getName(){
  方法體;
}

呼叫方法:
getName()

形參與實參

方法的形參與實參:
@1、呼叫方法時傳入的引數,稱為實參
@2、在方法定義時的引數稱為形參

package test_java;
import java.util.Scanner;
public class Test28 {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("請輸入函式:");
        int line = input.nextInt(); //此時控制檯才的提示輸入游標才會出現,值賦給變數Iine
        //在呼叫方法時傳入的引數,稱為實參
        printStar(line);
    }
    /**
       帶引數的方法
       形參:在方法定義時的引數稱為形參
     */
    public static void printStar(int num){
        //外層迴圈控制行數
        for(int i =1;i<=num;i++){
            //內層迴圈控制列數,第一行1列,第二行2列...
            for(int j=1;j<=i;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

方法的返回值

方法的返回值:
return:結束方法[遇見return表示方法的結束]
返回值:就是功能的結果。由return帶給呼叫者

注意:
@1、若當前方法沒有返回值型別,即返回值型別是void,那麼當前方法中可以不寫return
@2、return即表示結束一個方法,也可以將返回值返回給呼叫當前方法的呼叫者
@3、return返回值是一次只能返回一個值,不可以以返回多個值
@4、一個方法中可以有多個return,但被執行的只能有一個,所以需要判斷

注意:
@1、呼叫方法時,如果該方法有返回值,需要定義一個資料型別接收該值【所以,定義方法時,方法前面的型別即為該方法返回值的型別】
@2、定義接收的資料型別需要包含或等於函式返回值的資料型別
@3、呼叫函式都寫在主函式裡去才能呼叫
@4、當定義的函式有返回值時,每一個判斷出口都要有一個return,因為定義了函式有返回值的


函式有返回值:
public class Test29 {
    public static void main(String[] args) {
        //呼叫方法
        Scanner input = new Scanner(System.in);
        System.out.println("請輸入年份: ");
        int year = input.nextInt();
        boolean bool = isRunNian(year);//函式有返回值,所以需要定義一個資料型別去接收
        if(bool){
            System.out.println("閏年");
        }else{
            System.out.println("平年");
        }
    
    }
    public static boolean isRunNian(int year){  //這裡的boolean就是該方法返回值的型別,所以要先定義起來
        if(year%4==0 && year%100!=0 || year%400==0){
            return true;
        }else{
            return false;//每一個判斷出口都必須要有一個return,因為定義了函式是有返回值的
        }
    }
}

函式無返回值:
public static void print(){
  for(int i =0;i<10;i++){
      if(i==5){
          return; 
 // return表示方法的結束;這裡的return就沒有返回值(因為定義的是void的函式型別),因此就不用接收,直接呼叫該方法print()
        }
        System.out.println(i); //因此列印的i 只到4
    }
}

直接呼叫即可:print()

舉例2:
/**
    方法的返回值:2、根據傳入的引數數量列印直角三角形
 */
package test_java;
import java.util.Scanner;
public class Test30 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        System.out.println("請輸入一個三角形的行數: ");
        int num = input.nextInt();
        printTriangle(num);

    }
    
    public static void printTriangle(int line){
        for(int i=1;i<=line;i++){
            //內層迴圈1控制空格的列數
            for(int j=i;j<line;j++){
                System.out.print(" ");
            }
            //內層迴圈2控制*號的列數
            for(int k=1;k<=i*2-1;k++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

方法的過載

在類中可以建立多個方法,它們具有相同的名字,但具有不同的引數和不同的定義;
返回值不能作為過載的條件。
如:
public void method(int a){...}
public void method(char c){...}

舉例:
/**
    overloading method
     方法的過載:在同一個類中,方法名相同引數列表不同,返回值不能作為過載的條件
 */

package test_java;

public class Test31 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int sum = add(12,20);
        System.out.println(sum);

    }
    public static int add(int a , int b){    //所以該方法的返回值型別是int
        return a+b;
    }
    public static float add(float a,float b){  //所以該方法的返回值型別是 float
        return a+b;
    }
}

相關文章