首页 > 解决方案 > 为什么默认是'int',而不是'byte'?

问题描述

请解释一下,为什么,当我编写 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);
    }
}

标签: javaintbyteoverloading

解决方案


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

3.10.1 节。整数文字说:

如果整数文字以 ASCII 字母或(ell)long为后缀,则它是类型;否则它是类型§4.2.1)。Llint

所以你的数字文字10是 type int


推荐阅读