1. 程式人生 > 其它 >java中不定長引數方法與定長引數方法的過載,執行順序!+

java中不定長引數方法與定長引數方法的過載,執行順序!+

在一個類中定義(過載)兩個方法名、返回值一樣,而一個方法中傳入不定長引數,另一個傳入的是定長引數。當在main中呼叫該方法,並且傳入引數滿足兩個方法時,會使用的是哪一個方法呢?

public class OverLoad{
	public static void add(int...a){
		System.out.println("不定長引數");
	}
	
	public static void add(int a){
		System.out.println("定長引數");
	}
 
	public static void main(String[] args) {
		add(1);
	}
}

如程式碼所示,當呼叫add(1)時兩個方法均滿足,執行,結果表面呼叫的是定長引數的方法。

public class OverLoad{
	public static void add(int...a){
		System.out.println("不定長引數");
	}
	
	/*public static void add(int a){
		System.out.println("定長引數");
	}*/
 
	public static void main(String[] args) {
		add(1);
	}
}

接下來註釋掉定長引數的方法,執行,結果表面呼叫的是不定長引數的方法。

初步結論:當類中過載兩個除引數(一個是定長引數,另一個是不定長引數,並且型別相同)以外都相同的方法,呼叫該方法,並且傳入的引數兩個方法都可以滿足時,會優先使用定長引數方法,當發現沒有定長方法時,將傳入的引數轉成陣列以滿足不定長引數方法。