为什么输出int?

Raj*_*Raj 1 java overloading variadic-functions

为什么主方法不调用第一种方法?

public class Test {           

    public static void printValue(byte...b) {  
        System.out.println("long");  
    }  

    public static void printValue(int i, int j, int k) {  
         System.out.println("int");  
    }

    public static void main(String... args) {  
        byte b = 9;  
        printValue(b,b,b);  
    }  
}  
Run Code Online (Sandbox Code Playgroud)

为什么输出int

Roh*_*ain 5

在选择最合适的方法时,编译器首先会选择加宽,然后选择Boxing,最后,如果全部失败,则为Var-args.在您的情况下,它将bytes扩展所有to ints以获得匹配方法,具有3个int类型参数.有关详细信息,请参阅JLS§15.12.2.