天天看點

【JAVA基礎】—方法及方法的重載

前言

    上一篇部落格為大家介紹了java中的數組,本此将和大家一起學習‘方法’,java中的方法是什麼樣的呢?

正文

方法的定義

    方法可以了解為解決某件事情的辦法,比如說去公司上班,可以選擇騎Hello單車,也可以選擇做公共汽車的方式,這種解決上班出行方式的辦法就稱為方法。

    在JAVA中,方法就是用來解決某件事情或實作某個功能的辦法。

    方法命名時注意:自定義名字,滿足辨別符規範,方法名字首字母小寫,後面每個單詞首字母大寫

方法的文法格式

修飾符 傳回值類型 方法名(參數類型 參數名,參數類型 參數名,……){
    執行語句 
    ……
    return 傳回值;
}
           

    說明:

  • 修飾符 : 方法的修飾符比較多,最常見的要說public 和 private ,還有靜态修飾符static,最終修飾符final等。
  • 傳回值類型: 用于限定方法傳回值的資料類型。
  • 參數類型:用于限定調用方法時傳入參數的資料類型。
  • 參數名:是一個變量,用于接收調用方法時傳入的資料。
  • return關鍵字 :用于結束方法以及傳回方法指定類型的值。
  • 傳回值:被return 語句傳回的值,該值會傳回給調用者。
  • 對于有參數的方法,括号内寫明參數類型和參數名,對于不需要接收任何參數的方法,括号内不寫任何内容;方法的傳回值必須為方法聲明的傳回值類型,如果方法無傳回值,傳回值類型要聲明為void,此時方法中return語句可以省略。
/*

   要求:計算一個長方形的面積

*/
public class MethodDemo{
    public static void main(String[] args){
       //調用getArea方法
        int areas = getArea(,);
        System.out.println("面積是:"+ areas);
    }
     public static int getArea(int w,int h){
         //實作方法的功能主體
         return  w * h;

     }
}
           

方法的調用

     隻有在方法在被調用時,方法才會運作起來,一般在類中定義主方法,也就是我們常見的main()方法,我們習慣将主方法寫在類的最上邊,便于閱讀。在主方法中完成方法的調用。

     方法運作時才和記憶體發生關系,進入到記憶體中,而編譯時是和記憶體沒有關系的。

     我們以上述代碼為例,講述方法進棧的記憶體情況:

【JAVA基礎】—方法及方法的重載

     1、class檔案進入方法區

     2、main方法進入方法棧,壓棧

     3、main方法調用getArea方法,getArea方法進棧

     4、getArea方法執行,将結果傳回給main方法

     5、getArea方法執行結束,出棧 ,也叫彈棧,釋放記憶體

     6、main方法執行結束,出棧,釋放記憶體

方法的參數傳遞

    在調用一個方法時,我們會把指定的數值,傳遞給方法中的參數,這樣方法中的參數就擁有了這個指定的值,可以使用該值,在方法中運算了,這種傳遞方式,稱為參數傳遞。

    定義方法時,參數類别中的變量,我們稱為形式參數;

    調用方法時,傳入給方法的數值,我們稱為實際參數。

【JAVA基礎】—方法及方法的重載

說明:

1. 當調用方法時,如果傳入的數值為基本資料類型(包含String類型),傳的是資料,形式參數的改變對實際參數不影響。

2. 當調用方法時,如果傳入的數值為引用資料類型(String類型除外),傳的是位址,類似于合租,形式參數的改變對實際參數有影響。

方法的重載

    假設我們要在程式中實作一個對數字求和的方法,由于參與求和數字的個數和類型都不确定,是以要根據不同的情況去設計不同的方法,這樣的情況下,增加了代碼量不說,還影響了程式的可讀性,每一種方法各不相同,在調用時就很難厘清哪種情況該調用哪個方法。

    為了解決這個問題,Java允許在一個類中定義多個名稱相同的方法,但是參數的類型或個數必須不同,這就是方法的重載。

/*
   方法的重載特性(overload)

*/
public class MehtodOverLoadDemo{
    public static void main(String[] args){

    int x = getSum(,,);
    System.out.println(x);
    }


    public static int getSum(int a,int b){
        System.out.println("兩個int參數");
        return(a+b);
    }

    public static int getSum(int a,int b,int c){
        System.out.println("三個int參數");
        return(a+b+c);

    }
    public static double getSum(double a,double b){
        System.out.println("兩個double參數");
        return(a+b);
    }
}
           

    注意事項

  • 重載方法參數必須不同

        參數個數不同,如method(int x)與method(int x,int y)不同

        參數類型不同,如method(int x)與method(double x)不同

        參數順序不同,如method(int x,double y)與method(double x,int y)不同

  • 重載隻與方法名與參數類型相關與傳回值無關

         如 void method(int x)與int method(int y)不是方法重載,不能同時存在

  • 重載與具體的變量辨別符無關

         如 method(int x)與method(int y)不是方法重載,不能同時存在

  • 方法重載,是通過JVM來完成同名方法的調用的,通過參數清單來決定調用的是哪一個方法。
總結

    感謝您的閱讀,java方法及方法的重載先介紹到這裡,後續部落格将和您一起學習自定義類和ArrayList集合。