这是我的代码:
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
?
答案 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
。如果您需要byte
或short
,则必须明确投射。
可能你有充分的理由想要一个short
的方法,但请记住,这是非常罕见的。当然,出于性能原因,你不希望这样做。默认情况下,Java使用32位int
,因为几乎每个处理器都可以在本机上使用32位整数。您可能会发现short
将比int
更慢地运行 。
(当然,如果您正在进行专门的16位算术,那么您可能仍然需要使用short
。)