天天看點

方法的定義與使用

目錄

一、方法的定義

二、定義方法的基本格式:

三、方法的調用

四、方法的優點好處

五、方法的重載

六、擴充

一、方法的定義

方法類似于其它語言的功能子函數,是一段用來完成特定功能的代碼段。

例如下面代碼中,當分别計算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。

方法名:是方法的實際名稱,方法名和參數表共同構成方法簽名。

參數類型:參數像是一個占位符。當方法被調用時,傳遞給參數,這個值被稱為實參或變量。參數清單是指方法的參數類型、順序和參數的個數。參數是可選的,方法可以不包含任何參數。

形式參數:在方法被調用時用于接收外界輸入的資料。

實參:調用方法時實際傳給方法的資料。

方法體:方法體包含具體的語句,定義該方法的功能

繼續閱讀