2011-06-07 32 views
11

为什么这段代码会打印int?用Short和int重载

public static void main(String[] args) { 
    short s = 5; 
    A(s); 
} 
public static void A(int a){ 
    System.out.println("int"); 
} 

public static void A(Short a){ 
    System.out.println("short"); 
} 
+0

这个班在哪里? – 2011-06-07 16:03:52

+2

短或短? – 2011-06-07 16:04:19

+0

任何课程都适合。首先 - 短,第二 - 短。 – ilalex 2011-06-07 16:12:30

回答

15

因为上传到int是在1.0版本的Java中并且在5.0版本中添加了自动装箱功能。改变行为会破坏为老版本Java编写的代码。

然而,像这样的混合类型表明你的设计有什么问题,它只是你在困惑中找到的东西。 ;)

+0

这是我的同事,谁正在准备认证的问题。 – ilalex 2011-06-07 16:14:27

+0

如果有一个面试问题,我建议你不要这样写代码,因为它令人困惑。 ;) – 2011-06-07 16:30:57

12

由于扩大节拍拳击

原因:

因为增宽还有很长很长介绍,其中前拳击后来就这么不打破它这样做的任何代码。

+3

+1:由4个主要版本的Java。 – 2011-06-07 16:04:52

+2

也**加宽节拍VAR ARG ** – 2011-06-07 16:08:13