天天看點

java面向對象(三)方法重載與值傳遞

什麼是方法重載?

在同一個類中,允許存在一個以上的同名方法,隻要他們的參數個數或者類型不同。

為什麼要使用方法重載?

想要實作同樣的功能,但是傳入方法的資料類型卻跟原來不同。

方法的形參傳遞機制:值傳遞

形參:方法聲明時的參數

實參:方法調用時實際傳給形參的參數

值傳遞機制:

1、如果參數是基本的資料類型,此時實參賦給形參的是實參真實存儲的資料值,複制了一份一樣的資料傳給方法中的形參,形參改變不影響實參

2、如果變量是引用資料類型,此時指派的是變量所儲存的位址值

//參數是基本資料類型
public class test15 {
  public static void main(String[] args) {
  	int m = 10;
  	int n = 20;
  	test15 tt = new test15();
  	//具體執行個體利用方法實作列印輸出m和n交換後的結果
  	System.out.println("交換前:m= "+m+", n= "+n);
  	System.out.println();
  	tt.swap(m,n);
  	System.out.println("調用交換方法後的實參值:m= "+m+", n= "+n);
  }	
  //參數是基本資料類型
  public void swap(int m,int n) {
  	int temp;
  	temp = m;
  	m = n;
  	n = temp;
  	System.out.println("參數是基本資料類型-調用交換方法後的形參值:m= "+m+", n= "+n);
  	System.out.println();
  }
}

           
  • 運作結果
java面向對象(三)方法重載與值傳遞

記憶體解釋圖:

java面向對象(三)方法重載與值傳遞
//參數是引用資料類型
public class test16 {
	public static void main(String[] args) {
		Data data = new Data();
		data.m = 10;
		data.n = 20;
		System.out.println("交換前:m= "+data.m+", n= "+data.n);
		System.out.println();
		test16 tt = new test16();
		
		tt.swap(data);
		System.out.println("調用交換方法後的實參值:m= "+data.m+", n= "+data.n);
	}
	// 參數是引用資料類型
	public void swap(Data data) {
		int temp;
		temp = data.m;
		data.m = data.n;
		data.n = temp;
		System.out.println("參數是引用資料類型-調用交換方法後的形參值:m= " + data.m + ", n= " + data.n);
		System.out.println();
	}

}
class Data{
	int m;
	int n;
}
           
  • 運作結果
java面向對象(三)方法重載與值傳遞

記憶體解釋圖:

java面向對象(三)方法重載與值傳遞