真题分析
面向对象程序设计
Autoboxing
(1)Given the following Java code:
12.public class Hello {
13.public static void go( short n ) { System.out.println( "short" ); }
14.public static void go( Short n ) { System.out.println( "SHORT" ); }
15.public static void go( Long n ) { System.out.println( "LONG" ); }
16.public static void main( String[] args ) {
17.Short y = 6;
18.int z = 7;
19.go ( y ) ;
20.go ( z );
21.}
22.}
What is the result?
A. Short Long
B. SHORT LONG
C. Compilation fails
D. An exception is thrown at runtime
答案:C
解析:
� 从第 17 列开始, y 为 Short 类别之对象变量, 其值为 6 (Autoboxing)
� 第 18 列, z 为 int 型态变量
� 第 19 列, 呼叫 go(), 参数为 Short 型态, 所以执行第 14 列的 go(Short n)
� 第 20 列中, 呼叫 go(), 参数型态为 int, 但是并无这种方法,
o int 无法自动转型为 short
o 因此更不可能 Autoboxing 为 Short
o 也不可能转为 Long, 只可能转为 long 型态
o 所以将在此处会发生编译错误
评论0
最新资源