每次调用Integer方法 - methodOverloading -java

Man*_*H M 2 java overloading

我在方法重载方面有些困惑,任何人都可以解决这个问题.

在我的示例类中,我有一个名称显示的方法,它被重载,代码如下所示.

class Sample {
    void display(byte num) {
        System.out.println("under byte");
    }

    void display(short num){
        System.out.println("under short");
    }

    void display(int num) {
        System.out.println("under int");
    }

    void display(long num) {
        System.out.println("under long");
    }

    public static void main(String... args) {
        Sample sample = new Sample();
        sample.display(10);
        sample.display(128);
        sample.display(134572);
        sample.display(65757l);
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到了输出

under int
under int
under int
under long
Run Code Online (Sandbox Code Playgroud)

为什么即使数字小于127也jvm没有调用接受字节作为参数的方法?

提前致谢

Era*_*ran 5

没有后缀的整数值的int文字总是被编译器视为文字.因此,display(int num)在前3种情况下选择,无论实际值如何.

在最后一种情况下,您传递了带l后缀的文字,后者被视为long,这就是为什么接受a的方法long被调用的原因.


归档时间:

查看次数:

175 次

最近记录:

7 年,7 月 前