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

Why 'int' by default, but not 'byte'?

请解释一下,为什么,当我编写 4 个重载方法并调用它时 => 它默认选择 'int' 的方法,而不是 'byte',即 closer/better,因为它可以存储从 -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);
    }
}

因为Java Language Specification是这么说的。

3.10.1. Integer Literals 节说:

An integer literal is of type long if it is suffixed with an ASCII letter L or l (ell); otherwise it is of type int (§4.2.1).

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

这是因为数字字面量的默认类型是整型。要指定长文字,您应该在末尾添加 L。要指定字节文字 - 您应该转换值