有一段代码:
public class Main_num {
public static void num(Integer i) {
System.out.println("num(Integer)");
}
public static void num(short i) {
System.out.println("num(short)");
}
public static void num(long i) {
System.out.println("num(long)");
}
public static void num(Object i) {
System.out.println("num(Object)");
}
public static void num(int... i) {
System.out.println("num(int...)");
}
public static void main(String[] args) {
num(5);
}
启动后,会显示num(long)
.其余方法为什么不被调用是可以理解的,但对我来说并不明显为什么程序将数字 5 识别为 long 而不是 Short 并调用相应的方法 (num(long i)) 而不调用 num(short i) )。有人可以解释一下吗?