本章節目標:
理解方法的本質以及作用;掌握方法的定義;掌握方法如何調用;理解棧數據結構;理解方法執行過程中內存是如何變化的;掌握方法的重載機制;掌握方法遞歸算法。
知識框架:
我們先不講方法是什么,先來看一段代碼,分析以下程序存在哪些缺點,應該如何去改進:
public static void main(String[] args) {
//請計算10和20的和
int a = 10;
int b = 20;
int c = a + b;
System.out.println(a + "+" + b + "=" + c);
//請計算666和888的和
int x = 666;
int y = 888;
int z = x + y;
System.out.println(x + "+" + y + "=" + z);
//請計算888和999的和
int m = 888;
int n = 999;
int e = m + n;
System.out.println(m + "+" + n + "=" + e);
}
以上代碼完成了三個求和的功能,每一次求和的時候都把代碼重新寫了一遍,顯然代碼沒有得到“重復利用”,表面上看是三個功能,但實際上只是“一個”求和功能,只不過每一次參與求和的實際數值不同。java中有沒有一種方式或者語法,能讓我們把功能性代碼寫一次,然后給這個功能性代碼傳遞不同的數據,來完成對應的功能呢?答案是:當然有。這就需要我們掌握java語言中的方法機制,接下來大家看看改進之后的代碼(這里先不需要掌握方法是怎么定義的以及怎么調用的,只要看以下代碼就行,此小節是為了讓大家理解方法的本質以及作用):
public static void main(String[] args) {
//調用求和方法計算10和20的和
sumInt(10 , 20);
//調用求和方法計算666和888的和
sumInt(666 , 888);
//調用求和方法計算888和999的和
sumInt(888 , 999);
}
//專門負責求和的方法
public static void sumInt(int a , int b){
int c = a + b;
System.out.println(a + "+" + b + "=" + c);
}
運行結果如下圖所示:
圖7-1:求和結果
通過以上程序我們可以看出,其實方法也沒什么神秘的,方法其實就是一段普通的代碼片段,并且這段代碼可以完成某個特定的功能,而且可以被重復的調用/使用。java中的方法又叫做method,在C語言中叫做函數。
從現在開始大家以后在寫代碼的時候就要有定義方法的意識了,只要是可以獨立出來的功能,我們都可以定義為單獨的一個方法來完成,如果以后需要使用此功能時直接調用這個方法就行了,不要把所有的代碼都扔到main方法當中,這樣會導致程序的“復用性”很差。