JAVA 可变参数+方法重载 执行结果疑问

问题:
当代码如下编写时,为何会执行参数类型为char的方法,而不会执行其他方法?

代码如下

package cn.com;

public class M11 {

//    public static void f1(byte... bytes){
//        System.out.println("f1(byte)");
//    }

    public static void f1( long... longs ){
        System.out.println("f1(long)");
    }

    public static void f1( char... chars ){
        System.out.println("f1(char)");
    }

    public static void f1( int... ints ){
        System.out.println("f1(int)");
    }

    public static void main(String[] args) {
        f1();
        f1();
        f1();
    }
}

运行结果如下

f1(char)
f1(char)
f1(char)

图片说明
我对你的源码进行编译之后再进行反编译得到的是这样的。
所以建议研究一下jvm方面的

long、char、int,只有char字节最短,空值时,jvm选择占用最小的方法。