我在方法重载方面有些困惑,任何人都可以解决这个问题.
在我的示例类中,我有一个名称显示的方法,它被重载,代码如下所示.
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没有调用接受字节作为参数的方法?
提前致谢
没有后缀的整数值的int文字总是被编译器视为文字.因此,display(int num)在前3种情况下选择,无论实际值如何.
在最后一种情况下,您传递了带l后缀的文字,后者被视为long,这就是为什么接受a的方法long被调用的原因.
| 归档时间: |
|
| 查看次数: |
175 次 |
| 最近记录: |