方法詳解_方法的定義和作用
**方法有什麼作用?**
先來看一個需求
計算10+15的值
計算20+30的值
按照以前學習的知識,你可能會這樣編寫代碼:
int a = 10;
int b = 15;
int sum1 = a + b;
System.out.println(sum1);
int d = 20;
int e = 30;
int sum2 = d + e;
System.out.println(sum2);
比如你們公司需要招聘會計,會計A只會計算10+15的和,會計B只會計算20+30的和,如果有其他數據需要計算的話還得再招聘會計,顯然這是不行的。
上面兩部分代碼的內容都是計算兩組數字的和,功能是相同的,只不過數據不同。倘若再計算其他兩組數據的和,則需要再重複編寫一下上面的代碼,這樣會導致代碼的冗餘,如果相同的功能,最好是能夠通過直接傳遞不同的數值來完成運算,在實際應用當中,應該減少冗餘,提高代碼的複用性,那該如何提高代碼的複用性呢?我們需要定義一個方法。
main方法
其實在之前的學習當中,已經接觸過一個方法了,那就是main方法,main方法是所有程序的入口,這是sun公司規定的,程序都是從main方法開始執行的,如果將一個程序比喻成一座大樓,那麼main方法就相當於是這個樓最外面的大門。
方法初體驗
下面咱們先來體驗一下方法,看看方法有什麼好處:
/*
方法初體驗
方法實際上就是一段代碼片段
*/
public class Test{
public static void main(String[] args){
//計算10加15的和
//調用sumInt方法
sumInt(10,15);//(10 , 15)叫做實際參數列表,簡稱:實參
//計算20加30的和
//調用sumInt方法
sumInt(20,30);
}
//定義方法,完成兩個整數的求和。
//注意:目前所有的方法請定義成public static
//該方法的作用就是計算兩個int類型求和
//以後如果需要計算兩個int類型的求和,直接調用該方法就可以了
public static void sumInt(int a,int b){//(int a , int b) 是形式參數列表,簡稱:形參
int c = a + b;
System.out.println(a + "+" + b +"=" +c);
}
}
方法的優點就是可以提高代碼的複用性。以後要有編寫方法的意識,不要把所有代碼都堆積在main方法中。什麼時候需要定義方法?當希望提高某段代碼複用性的時候可以去定義一個方法。
注意:
1 方法體中不能定義方法,只能在類體中定義方法。
2 上面代碼中的(int a , int b)叫做形式參數列表,簡稱形參,調用sumInt方法時傳入的(10 , 15)叫做實際參數列表,簡稱:實參。java語言中有規定,實參和形參在數據類型上要對應相同,並且在數量上要相同。
3 形參就是局部變量,變量名的命名可以隨意命名,最好是見名知意
局部變量和成員變量
變量根據聲明的位置分爲:
1 局部變量:在方法體當中聲明的變量
2 成員變量:在方法體之外聲明的變量
如何定義方法
修飾符 返回值類型 方法名(參數類型 參數名1,參數類型 參數名2...) {
方法體語句;
//如果方法沒有返回值的話就不需要return了。
return 返回值;
}
修飾符:暫時先寫 public static。後面再詳細的講解其他的修飾符和作用。
返回值類型:可以是java語言中的任何一種數據類型(基本數據類型和引用數據類型)。
如果方法執行結束後,沒有任何返回值,返回值類型填寫void,即表示沒有返回值。
方法名:自己定義,只要符合命名規則即可,使用駝峯方式命名,即第一個單詞首字母小寫,後面單詞的首字母大寫,例如sumInt。
參數:
沒有參數:如果沒有參數,參數類型和參數名可以不寫,()裏面空着就行
有參數:可以有一個,或多個參數,多個參數用”,”隔開
參數類型:就是參數的數據類型,基本數據類型和引用數據類型都可以
參數名:就是變量名,符合命名規則即可
方法體語句:就是完成功能的代碼。
return:如果方法的返回值類型不是void,那麼在方法體中必須使用return 語句來返回數據。return語句一旦執行,則方法結束,因此在方法中return後面的代碼是不會執行的。
返回值:方法執行的結果,將結果返回給調用者。
main方法解讀
public static void main(String[] args)
public static是修飾符
void表示main方法結束之後不返回任何值
main是方法的名字,是sun公司規定好的
(String[] args)是形式參數列表,該參數表示是一個String類型的數組,形參的名字是隨意的,下面這種寫法也是可以的,只不過通常都會將參數名字寫成args。
public static void main(String[] monkey1024)
再次回顧上面的代碼
例1:如下代碼是沒有返回值的方式
public class MethodTest{
//程序的入口
public static void main(String[] args){
sumInt(10,15);
sumInt(20,30);
}
//定義方法,完成兩個整數的求和。
//注意:目前所有的方法請定義成public static
public static void sumInt(int a,int b){
int c = a + b;
System.out.println(a + "+" + b +"=" +c);
}
}
例2:有返回值的方式
public class MethodTest{
public static void main(String[] args){
//因爲方法的返回值是int類型,所以定義int類型的變量來接收返回值
int result1 = sumInt(10,15);
int result2 = sumInt(20,30);
System.out.println(result1);
System.out.println(result2);
//下面這樣寫也可以
//因爲sumInt方法的返回值是int類型,所以其計算的結果其實就是一個int類型的數據
System.out.println(sumInt(10,15));
System.out.println(sumInt(20,30));
}
//返回值類型爲int
public static int sumInt(int a,int b){
int c = a + b;
return c;
}
}
定義方法時只有兩種情況,一種是有返回值的,一種是沒有返回值的,這個可以根據具體的需求去定義使用哪種方式,如果需要方法計算出的結果再進行下一步運算的話,那就定義有返回值的。Java語言是人類編寫出來的,所以很多概念也是來源於生活。
case 1.你的老婆給你一張銀行卡,讓你取10元錢,隨便花,當做你的零用錢。這種情況就不需要返回值,你取了錢之後怎麼花隨便,老婆也不會管。
case 2.你的老婆給你一張銀行卡,讓你取1000元錢,然後再把這些錢給她,她要去買衣服。這種情況需要返回值,你取了錢之後,一分也不能動,需要全部上繳老婆。
上面的情況裏面,如果你不知道銀行卡密碼的話,還需要老婆告訴你,這就相當於老婆把密碼當做一個參數傳給你,你得到這個密碼後才能去取錢。