java學習(六)方法

java學習(六)方法

目標:掌握方法如何調用;理解棧數據結構;理解方法執行過程中內存是如何變化的;掌握方法的重載機制;掌握方法遞歸算法。

方法定義與調用

代碼示例----無返回值

public class MethodTest_01{
    public static void main(String[] args) {
        MethodTest_01.sumInt(100, 200); //調用方法sumInt
        MethodTest_01.sumDouble(6.0, 8.0);   //調用方法sumDouble
        }
        public static void sumInt(int x , int y){
            System.out.println(x + "+" + y + "=" + (x + y));
        }
        public static void sumDouble(double a , double b){
            System.out.println(a + "+" + b + "=" + (a + b));
        } 
}

代碼解釋:

  • [修飾符列表] ,目前大家統一寫成 public static

  • 如果一個方法執行結束之後不準備返回任何數據,則返回值類型必須寫 void

  • 方法名,遵循駝峯命名方式

  • 形式參數列表(int x, int y)

  • 方法體,由一對兒大括號括起來,在形參的後面

代碼示例----接收返回值

public class MethodTest_02{
    public static void main(String[] args) {
        //可以編譯也可以正常運行
        sumInt(10 , 20);  //調用sumInt方法
        int retValue = sumInt(100 , 200);  //接收返回值,變量的數據類型和返回值類型要一致哦
        System.out.println("計算結果 = " + retValue);  //打印變量的值
        //編譯報錯,返回值類型是 int,不能採用 byte 接收
        //byte retValue2 = sumInt(1 , 2);
        }
    public static int sumInt(int a , int b){
        return a + b;
    }
}

棧,又稱堆棧,先進後出原則

  • 什麼時候壓棧?定義方法只是將代碼存儲在方法內並不會在棧內存中給分配空間,只有調用方法的時候,java虛擬機纔會在“棧內存”中給該方法分配空間,此時發生壓棧動作

  • 什麼時候彈棧?這個方法執行結束的時候,這個方法在棧內存中所對應的活動空間就會釋放掉,此時發生彈棧動作。

代碼執行順序

public class MethodTest_03{
    public static void main(String[] args) {
        System.out.println("main begin");
        m1();
        System.out.println("main over");
    }
    public static void m1() {
        System.out.println("m1 begin");
        m2();
        System.out.println("m1 over");
    }
    public static void m2() {
        System.out.println("m2 begin");
        System.out.println("m2 over");
    } 
}

main begin 先將main方法壓棧,輸出main begin,後面代碼在main棧底部

m1 begin 再將m1方法壓棧,輸出m1 begin,後面代碼再m1棧底部

m2 begin 再將m2方法壓棧,此時m2方法棧在棧頂部 ,先輸出 m2 begin

m2 over 再輸出m2 over ,彈出m2棧

m1 over 此時m1棧在棧頂,輸出m1 over,彈出m1棧

main over 此時棧內只有一個main棧,輸出main over,彈出。執行到此棧空了,程序執行完成。

方法重載:什麼是方法重載?什麼情況下我們考慮使用 方法重載?

方法重載(overload)是指在一個類中定義多個同名的方法, 但要求每個方法具有不同的參數的類型或參數的個數。調用重載方法時,Java 編譯器能通過檢 查調用的方法的參數類型和個數選擇一個恰當的方法。

代碼滿足以下3個條件就會方法重載

  • 在同一個類當中。

  • 方法名相同。

  • 參數列表不同:個數不同算不同,順序不同算不同,類型不同也算不同。

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