2011-06-07 54 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