天天看點

JavaSE_day09:面向對象(上)1. 類的結構之二:方法

面向對象(上)

  • 1. 類的結構之二:方法
    • 1.1 關鍵字:return
    • 1.2 方法的重載
    • 1.3 可變個數形參的方法
    • 1.4 Java的值傳遞機制
    • 1.5 遞歸方法

1. 類的結構之二:方法

1.1 關鍵字:return

  • 使用範圍:使用在方法體中
  • 作用:

    ① 結束方法

    ② 針對于傳回值類型的方法,使用"

    return

    資料"方法傳回所要的資料。
  • 注意點:

    return

    關鍵字後面不可以聲明執行語句。

1.2 方法的重載

定義:在同一個類中,允許存在一個以上的同名方法,隻要它們的參數個數或者參數類型不同即可。

總結:“兩同一不同”

  • 同一個類、相同方法名
  • 參數清單不同:參數個數不同,參數類型不同

構成重載的舉例:

public class OverLoadTest {
	public static void main(String[] args) {
		OverLoadTest test = new OverLoadTest();
		test.getSum(1,2);
	}
	
	//如下的4個方法構成了重載
	public void getSum(int i,int j){
		System.out.println("1");
	}
	
	public void getSum(double d1,double d2){
		System.out.println("2");
	}
	
	public void getSum(String s ,int i){
		System.out.println("3");
	}
	
	public void getSum(int i,String s){
		System.out.println("4");
	}
	
	//如下的3個方法不能與上述4個方法構成重載
//	public int getSum(int i,int j){
//		return 0;
//	}
	
//	public void getSum(int m,int n){
//		
//	}
	
//	private void getSum(int i,int j){
//		
//	}	
}
           

如何判斷是否構成方法的重載?

  • 嚴格按照定義判斷:兩同一不同。
  • 跟方法的權限修飾符、傳回值類型、形參變量名、方法體都沒關系。

1.3 可變個數形參的方法

jdk 5.0新增的内容,具體使用:

  • 可變個數形參的格式:

    資料類型 ... 變量名

  • 當調用可變個數形參的方法時,傳入的參數個數可以是:0個,1個,2個,……
  • 可變個數形參的方法與本類中方法名相同,形參不同的方法之間構成重載
  • 可變個數形參的方法與本類中方法名相同,形參類型也相同的數組之間不構成重載。換句話說,二者不能共存。
  • 可變個數形參在方法的形參中,必須聲明在末尾
  • 可變個數形參在方法的形參中,最多隻能聲明一個可變形參。
public class MethodArgsTest {
	public static void main(String[] args) {
		
		MethodArgsTest test = new MethodArgsTest();
		test.show(12); //test: 12
		test.show("hello");//show(String)

		test.show("hello","world");
		//show(String ... strs)
		//hello
		//world
		
		test.show();
		//show(String ... strs)
		
		test.show(new String[]{"AA","BB","CC"});
		//show(String ... strs)
		//AA
		//BB
		//CC
	}
	
	public void show(int i){
		System.out.println("test: "+i);
	}
	
	public void show(String s){
		System.out.println("show(String)");
	}
	
	public void show(String ... strs){
		System.out.println("show(String ... strs)");
		
		for(int i = 0;i < strs.length;i++){
			System.out.println(strs[i]);
		}
	}
	//不能與上一個方法同時存在
//	public void show(String[] strs){
//		
//	}
	
	//The variable argument type String of the method 
	//show must be the last parameter
//	public void show(String ...strs,int i){
//		
//	}
}
           

1.4 Java的值傳遞機制

規則:

  • 如果變量是基本資料類型,此時指派的是變量所儲存的資料值。
  • 如果變量是引用資料類型,此時指派的是變量所儲存的資料的位址值。

舉例:

public class ValueTransferTest {
	public static void main(String[] args) {
		
		System.out.println("***********基本資料類型:****************");
		int m = 10;
		int n = m;
		System.out.println("m = " + m + ", n = " + n);
		n = 20;
		System.out.println("m = " + m + ", n = " + n);
		
		System.out.println("***********引用資料類型:****************");
		Order o1 = new Order();
		o1.orderId = 1001;
		Order o2 = o1;//指派以後,o1和o2的位址值相同,都指向了堆空間中同一個對象實體。
		System.out.println("o1.orderId = " + o1.orderId + ",o2.orderId = " +o2.orderId);
		o2.orderId = 1002;
		System.out.println("o1.orderId = " + o1.orderId + ",o2.orderId = " +o2.orderId);
	}
}

class Order{
	int orderId;
}
           
JavaSE_day09:面向對象(上)1. 類的結構之二:方法

針對于方法的參數概念:

  • 形參:方法定義時,聲明的小括号内的參數
  • 實參:方法調用時,實際傳遞給形參的資料

典型例題與記憶體解析:

  • 案例1
    JavaSE_day09:面向對象(上)1. 類的結構之二:方法
  • 案例2
    JavaSE_day09:面向對象(上)1. 類的結構之二:方法

1.5 遞歸方法

遞歸方法:一個方法體内調用它自身。遞歸一定要向已知方向遞歸,否則這種遞歸就變成了無窮遞歸,類似于死循環。

**例:**計算1-n之間所自然數的乘積:

n!

public int getSum(int n) {
		if (n == 1) {
			return 1;
		} else {
			return n * getSum1(n - 1);
		}
	}