为什么它总是给出调用整数参数方法而不是短参数方法

时间:2014-12-08 09:22:50

标签: java overloading

这是我的代码:

public class Test 
{
    public static void main(String arg[]) {
        new Test().method1(5);
    }
    public void method1(int b) { // integer method
        System.out.println("integer ");
    }
    public void method1(short a) { // short method
        System.out.println("short");
    }
}

我正在运行这个类,它给了我integer的结果。为什么不给short

5 个答案:

答案 0 :(得分:2)

因为文字5默认被理解为int。如果要调用method1(short a)方法,则需要显式执行强制转换:

new Test().method1((short) 5);

答案 1 :(得分:1)

文字5的类型为int,这就是调用期望int的方法的原因。

new Test().method1((short)5)会调用期望short

的方法

答案 2 :(得分:0)

Java整数文字的默认类型是int,这就是调用整数方法的原因。

答案 3 :(得分:0)

您必须申请type conversion,因为您愿意拨打接收短片的功能。

尝试拨打:(short)5

答案 4 :(得分:0)

这是因为,如其他答案中所述,5本身就表示int。您可以通过附加long来表示L,因此5L将被视为long。如果您需要byteshort,则必须明确投射。

可能你有充分的理由想要一个short的方法,但请记住,这是非常罕见的。当然,出于性能原因,你不希望这样做。默认情况下,Java使用32位int,因为几乎每个处理器都可以在本机上使用32位整数。您可能会发现short将比int 更慢地运行

(当然,如果您正在进行专门的16位算术,那么您可能仍然需要使用short。)