java中不定長引數方法與定長引數方法的過載,執行順序!+
阿新 • • 發佈:2021-01-27
在一個類中定義(過載)兩個方法名、返回值一樣,而一個方法中傳入不定長引數,另一個傳入的是定長引數。當在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);
}
}
接下來註釋掉定長引數的方法,執行,結果表面呼叫的是不定長引數的方法。
初步結論:當類中過載兩個除引數(一個是定長引數,另一個是不定長引數,並且型別相同)以外都相同的方法,呼叫該方法,並且傳入的引數兩個方法都可以滿足時,會優先使用定長引數方法,當發現沒有定長方法時,將傳入的引數轉成陣列以滿足不定長引數方法。