目錄
一、方法的定義
二、定義方法的基本格式:
三、方法的調用
四、方法的優點好處
五、方法的重載
六、擴充
一、方法的定義
方法類似于其它語言的功能子函數,是一段用來完成特定功能的代碼段。
例如下面代碼中,當分别計算10累加到20、20累加到50、100累加到200時,其代碼都是使用for循環,使循環的初始值都為開始加的數字,循環到結束的數字。故三者的代碼除了循環的初始值和結束值不同,其餘都是一樣的。是以把該代碼段寫成一個獨立的方法(類似于C語言中的功能子函數)。當要實作從某個值累加到某個值時,直接調用該方法即可。方法類似于其它語言的功能子函數,是一段用來完成特定功能的代碼段。
public static void main(String[] args) {
// 計算10---20累加的和
int sum1 = sum(10,20);
System.out.println("10到20累加的和:" + sum1);
// 計算20---50累加的和
int sum2 = sum(20,50);
System.out.println("20---50累加的和:" + sum2);
// 計算100 ---200累加的和
int sum3 = sum(100,200);
System.out.println("100---200累加的和:" + sum3);
}
public static int sum(int begin,int end) {
int sum = 0;
for(int i = begin; i <= end; i++)
sum += i;
return sum;
}
二、定義方法的基本格式:
1.當參數清單中有多個相同資料類型的形參,聲明時也隻能分開聲明(int num1,int num2),不能一起聲明(int num1,num2)。
2.通路權限修飾符不寫時,預設為default。
3.在沒有傳回值的函數中使用return時, return單獨成立一條語句, 類似于break或者continue,後面不能跟任何的數值其作用是結束整個方法;
在一個有傳回值的函數中使用return 這種情況下函數中必須出現return return後面必須跟一個具體的數值,而且數值的類型和傳回值類型必須保持一緻 作用:結束整個方法,并且将傳回值攜帶給調用者。
通路權限修飾符 其他修飾符 傳回值類型 方法名稱(參數清單) {
//方法體
return 傳回值;
//如果傳回值類型void ,可以不用寫return
}
三、方法的調用
文法:方法名稱(實參清單);
- a.實參的數量和類型必須和形參保持完全的一緻。
- b.方法之間隻能進行調用,而不能在方法中聲明方法,聲明的方法和main方法是并列的
- c.如果定義方法有傳回值,運算的結果會傳回給調用者,調用者需要定義變量接收資料
- 參數的傳遞是值傳遞
public class PassByValueTest {
public static void swap(int num1,int num2) {
int temp = num1;
num1 = num2;
num2 = temp;
System.out.printf("swap方法===> num1 = %d,num2 = %d",num1,num2);
}
public static void main(String[] args) {
int num1 = 100; //實參
int num2 = 200;
System.out.printf("swap前===> num1 = %d,num2 = %d",num1,num2);
swap(num1, num2);
System.out.printf("swap後===> num1 = %d,num2 = %d",num1,num2);
}
}
swap前===> num1 = 100,num2 = 200
swap方法===> num1 = 200,num2 = 100
swap後===> num1 = 100,num2 = 200
方法裡的變量隻在方法裡起作用,即方法裡的變量作用域隻在方法裡。
下面通過堆棧圖示範整個程式執行過程。
1步.main方法入棧
2步.swap方法入棧
3.swap方法執行過程:實參傳遞給形參之後,swap方法内部num1=100,num2=200;執行完交換後
swap方法内部num1=200,num2=100。
4.swap方法執行完成後出棧銷毀,main方法裡num1值仍為原始值100,num2值仍為原始值200。是以最後列印時,num1=100,num2=200。
四、方法的優點好處
1.把複用的邏輯抽取出來,封裝成方法,提高代碼的重用性
2.實作相對獨立的邏輯,提高代碼的維護性,把錯誤限定在方法内
3.可以對具體實作進行隐藏、封裝,讓代碼看起來更簡潔 清晰
- 簡化代碼,提高代碼的可讀性,可維護性,可重用性
五、方法的重載
同一個類中,方法名相同,參數清單不同,即為方法重載。(和方法的修飾符和傳回值類型無關)
參數清單的不同包括:
參數個數不同:max(int num1, int num2) max(int num1, int num2,int num3)
參數資料類型不同:max(int num1, int num2) max(float num1, float num2)
參數順序不同:max(int num1, float num2) max(float num1, int num2)
六、擴充
區分什麼是類方法和執行個體方法
- 類方法:
-
,是屬于目前整個類的,而不是屬于某個執行個體的,隻能處理static域或調用static方法。使用static修飾的方法
- 執行個體方法:
- 屬于對象的方法,由對象來調用。
public class Demo {
float a;
//執行個體方法
void sum(float num1,float num2){
a = Max(num1,num2);
}
//類方法
static float Max(float num1,float num2){
//取最大值
return num1 <= num2 ? num2 :num1;
}
public static void main(String[] args) {
Demo demo =new Demo();
demo.sum(22,33); //執行個體方法必需先初始化類的執行個體,然後通過類的執行個體才能調用
Demo.Max(12,9); // 類方法可以直接通過類名調用
}
}
- 一個類中的方法可以互相調用。但要注意:執行個體方法可以調用該類中的其他方法,例如,sum()可以調用Max()。類方法隻能調用其他類方法,不能調用執行個體方法。
- 類方法又叫靜态方法, 執行個體方法又叫非靜态方法。
- 類方法可以直接通過類名調用,執行個體方法必需先初始化類的執行個體,然後通過類的執行個體才能調用
- 知識點小結
- Java中的方法分為類方法和執行個體方法,差別是類方法中有static修飾,為靜态方法,是類的方法。是以在類檔案加載到記憶體時就已經建立,但是執行個體方法是對象的方法,隻有對象建立後才起作用,是以在類方法中不能調用執行個體方法,但執行個體方法中可以調用類方法,且執行個體方法可以互相調用。
一般情況下一個方法包含以下文法:
修飾符:這是可選的,告訴編譯器如何調用該方法。定義了該方法的通路類型。
傳回值類型:方法可能會傳回值。沒有傳回值returnValueType是關鍵字void。
方法名:是方法的實際名稱,方法名和參數表共同構成方法簽名。
參數類型:參數像是一個占位符。當方法被調用時,傳遞給參數,這個值被稱為實參或變量。參數清單是指方法的參數類型、順序和參數的個數。參數是可選的,方法可以不包含任何參數。
形式參數:在方法被調用時用于接收外界輸入的資料。
實參:調用方法時實際傳給方法的資料。
方法體:方法體包含具體的語句,定義該方法的功能