六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 95|回复: 0

Java 试题备忘

[复制链接]

升级  2%

11

主题

11

主题

11

主题

秀才

Rank: 2

积分
53
 楼主| 发表于 2013-2-5 01:21:24 | 显示全部楼层 |阅读模式
1.
Given the following class definitions, what is the output of the statement new Child();
1. class Parent {
2.     {
3.         System.out.print(“1”);
4.     }
5.
6.     public Parent(String greeting) {
7.         System.out.print(“2”);
8.     }
9.  }
10.
11. class Child extends Parent {
12.     static {
13.         System.out.print(“3”);
14.     }
15.
16.     {
17.         System.out.print(“4”);
18.     }
19. }
A. 1234
B. 3123
C. 3142
D. 3124
E. The code does not compile.


E. The Child class gets the default constructor because it does not defi ne a constructor explicitly. The default constructor contains the line super(); which does not compile because Parent does not have a no-argument constructor. Therefore, the correct answer is E.



2.
Given the following class definition:
1. public class Forever {
2. public void run() {
3. while(true) {
4. System.out.println(“Hello”);
5. }
6. System.out.println(“Goodbye”);
7. }
8. }
what is output of the following statement?
new Forever().run();
A. Prints Hello indefinitely
B. Prints Hello until an error occurs
C. Prints Hello until an error occurs, then prints Goodbye
D. Compiler error on line 3
E. Compiler error on line 6

answer:
The code does not compile, so A, B, and C are incorrect. Line 3 is fi ne — you can declare an infi nite while loop. The compiler is aware that line 3 is an infi nite loop and that line 6 is an unreachable statement, so the compiler generates an error at line 6. Therefore, the answer is E.

3.
What is the output of the following program?
1. public class MathProblem {
2.     public static int divide(int a, int b) {
3.         try {
4.             return a / b;
5.         }catch(RuntimeException e) {
6.             return -1;
7.         }catch(ArithmeticException e) {
8.             return 0;
9.         }finally {
10.            System.out.print(“done”);
11.        }
12.     }
13.
14.     public static void main(String [] args) {
15.         System.out.print(divide(12, 0));
16.     }
17. }
A. - 1
B. 0
C. done0
D. done - 1
E. The code does not compile.
answer:
E. The order of catch blocks is important because they are checked in the order they appear after the try block. Because ArithmeticException is a child class of RuntimeException , the catch block on line 7 is unreachable. (If an ArithmeticException is thrown in the try block, it will be caught on line 5.) Line 7 generates a compiler error because it is unreachable code, so the answer is E.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表