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

时间:2020-04-27 19:36:47

标签: 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);
    }
}

2 个答案:

答案 0 :(得分:6)

因为Java Language Specification是这样。

3.10.1. Integer Literals节说:

整数文字,如果其后缀为ASCII字母longL(ell),则类型为l;否则,它的类型为int §4.2.1)。

因此,数字文字10的类型为int

答案 1 :(得分:0)

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