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