1.什么是方法伴逸?
Java方法是語(yǔ)句的集合奸绷,它們?cè)谝黄饒?zhí)行一個(gè)功能。
方法是解決一類(lèi)問(wèn)題的步驟的有序集合
方法包含于類(lèi)或?qū)ο笾?br>
方法在程序中被創(chuàng)建陪踩,在其他地方被引用
設(shè)計(jì)方法的原則:方法的本意是功能塊咐低,就是實(shí)現(xiàn)某個(gè)功能語(yǔ)句塊的集合揽思,我們?cè)O(shè)計(jì)方法的時(shí)候,最好保持方法的原子性(就是一個(gè)方法只完成1個(gè)功能见擦,這樣利于我們后期的擴(kuò)展)
2.方法的定義
Java的方法類(lèi)似于其他語(yǔ)言的函數(shù)钉汗,是一段用來(lái)完成特定功能的代碼片段,一般情況下鲤屡,定義一個(gè)方法包含以下語(yǔ)法:
方法包含一個(gè)方法頭和一個(gè)方法體儡湾,下面是一個(gè)方法的所有部分:
a.修飾符:修飾符,這是可選的执俩,告訴編譯器如何調(diào)用該方法徐钠。定義了該方法的訪問(wèn)類(lèi)型(如:public修飾符,static修飾符役首,final修飾符等)
b.返回值類(lèi)型:方法可能會(huì)返回值尝丐。returnValueType是方法返回值的數(shù)據(jù)類(lèi)型显拜。有些方法執(zhí)行所需的操作,但沒(méi)有返回值爹袁。在這種情況下远荠,returnValueType是關(guān)鍵字void。
c.方法名:是方法的實(shí)際名稱(chēng)失息。方法名和參數(shù)表共同構(gòu)成方法簽名譬淳。
d.參數(shù)類(lèi)型:參數(shù)像是一個(gè)占位符。當(dāng)方法被調(diào)用時(shí)盹兢,傳遞值給參數(shù)邻梆。這個(gè)值被稱(chēng)為實(shí)參或變量。參數(shù)列表是指方法的參數(shù)類(lèi)型绎秒、順序和參數(shù)的個(gè)數(shù)參數(shù)是可選的浦妄,方法可以不包含任何參數(shù)。
(形式參數(shù):在方法被調(diào)用時(shí)用于接受外界輸入的數(shù)據(jù)见芹。)
(實(shí)際參數(shù):調(diào)用方法時(shí)實(shí)際傳給方法的數(shù)據(jù)剂娄。)
方法體:方法體包含具體的語(yǔ)句,定義該方法的功能玄呛。
例:
public class Demo {
//main方法
public static void main(String[] args) {
//實(shí)際參數(shù)
int sum = add(1,2);
System.out.println(sum);
}
//加法
//形式參數(shù)阅懦,用來(lái)定義作用的
public static int add(int a,int b){
return a+b;
}
}
/*
方法的一般格式:
修飾符 返回值類(lèi)型 方法名(參數(shù)類(lèi)型 參數(shù)名){
****···
****方法體
****···
****return 返回值;
}
*/
例:
public class Demo {
public static void main(String[] args) {
int max = max(10,10);
System.out.println(max);
}
//比大小
public static int max(int num1,int num2){
int result = 0;
if (num1==num2){
System.out.println("num1==num2");
return 0;//終止方法
}
if (num1>num2){
result = num1;
}else {
result = num2;
}
return result;
}
}
3.方法的重載
重載就是在一個(gè)類(lèi)中徘铝,有相同的函數(shù)名稱(chēng)耳胎,但形參不同的函數(shù)。
方法重載的規(guī)則:
方法名稱(chēng)必須相同庭砍。
參數(shù)列表必須不同(個(gè)數(shù)不同、或類(lèi)型不同混埠、參數(shù)排列順序不同等)怠缸。
方法的返回類(lèi)型可以相同也可以不同。
僅僅返回類(lèi)型不同不足以成為方法的重載钳宪。
實(shí)現(xiàn)理論:
方法名稱(chēng)相同時(shí)揭北,編譯器會(huì)根據(jù)調(diào)用方法的參數(shù)個(gè)數(shù),參數(shù)類(lèi)型等去逐個(gè)匹配吏颖,以選擇對(duì)應(yīng)的方法搔体,如果匹配失敗,則編譯器報(bào)錯(cuò)半醉。
例:
public class Demo02 {
public static void main(String[] args) {
int max = max(10,20);
System.out.println(max);
}
//比大小
public static double max(double num1,double num2){
double result = 0;
if (num1==num2){
System.out.println("num1==num2");
return 0;//終止方法
}
if (num1>num2){
result = num1;
}else {
result = num2;
}
return result;
}
//比大小
public static int max(int num1,int num2){
int result = 0;
if (num1==num2){
System.out.println("num1==num2");
return 0;//終止方法
}
if (num1>num2){
result = num1;
}else {
result = num2;
}
return result;
}
}
若上述max變?yōu)閐ouble類(lèi)型疚俱,傳遞的值為int類(lèi)型(double max = (10,20)),依舊是調(diào)用int max方法缩多,計(jì)算出結(jié)果后進(jìn)行強(qiáng)制轉(zhuǎn)換變成double類(lèi)型的值呆奕。