SCJP 1.6版考題 173

出自 陳富國維基館
於 2013年3月30日 (六) 02:02 由 Ikk (對話 | 貢獻) 所做的修訂 (新頁面: Given: 11. public class Yikes{ 12. 13. public static void go(Long n){System.out.print("Long ");} 14. public static void go(Short n){System. outprint("Short ");} 15. public ...)
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
前往: 導覽搜尋
Given:
11. public class Yikes{
12.
13.   public static void go(Long n){System.out.print("Long ");}
14.   public static void go(Short n){System. outprint("Short ");}
15.   public static void go(int n){System.out.print("int ");}
16.   public static void main(String[] args){
17.     short y = 6;
18.     long z = 7;
19.     go(y);
20.     go(z);
21.   }
22. }

What is the result?
 A. int Long
 B. Short Long
 C. Compilation fails.
 D. An exception is thrown at runtime.

解答


Ans: A

解說:

go(y)會代15行的go方法,short可以自動提升至int 
 (那為什麼不採取Short的第14行go?變成Short物件會比單純16位元轉成32位元要複雜)
go(z)z是long,不可能代入15行的go,所以就用13行的go,z會auto-boxing成Long物件