为什么默认为“int”,而不是“byte”?

0 java int byte overloading

请解释一下,为什么当我编写 4 个重载方法并调用它时 => 它选择以“int”为默认值的方法,而不是“byte”,后者更接近/更好,因为它可以存储从 -127 到 128 的值?

class Main {
    public static void method(short s) {
        System.out.println("short");
    }

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

    public static void method(int i) {
        System.out.println("int");
    }

    public static void method(long l) {
        System.out.println("long");
    }

    public static void main(String[] args) {
        // put your code here
        method(10);
    }
}
Run Code Online (Sandbox Code Playgroud)

And*_*eas 6

因为Java 语言规范是这样说的。

3.10.1整数文字说:

long如果以 ASCII 字母Ll(ell)为后缀,则为整数文字类型;否则它是类型int(第4.2.1 节)。

所以你的数字文字10的类型是int