首页 > 代码库 > SCJP_104——题目分析(2)
SCJP_104——题目分析(2)
3.
public class IfTest{ public static void main(String args[]){ int x=3; int y=1; if(x=y) System.out.println("Not equal"); else System.out.println("Equal"); } }
what is the result?
这一题考察的是 if 语句。if 语句的写法如下:
if (boolean expression) { statement; ... }
所以,括号中必须是一个布尔值,或者是能得到布尔值的表达式。
同时,这一题还考察了 = 与 == 区别。
= :这是赋值符号,比如
int x = 0;
这句话定义了一个 int 类型的变量,命名为 x,同时赋值为 0。
== :这是比较符号,用来比较符号两边的表达式,结果返回一个 boolean 值,比如
1 == 2;
这句话返回 false。
所以正确答案为 compile error(编译错误)
4.
public class Foo{ public static void main(String args[]){ try{ return; } finally{ System.out.println("Finally"); } } }
what is the result?
A. print out nothing
B. print out "Finally"
C. compile error
这一题目考察的是 try—catch—finally 的用法。
try{} 负责抛出异常,catch(){} 负责捕捉异常。而 finally{} 代码块,不管有没有抛出异常,总是会被执行到。
注意:只有一种情况,fanally{} 不会被执行。就是程序终止的时候,比如:
1 public class Test 2 { 3 public static String output = ""; 4 5 public static void foo(int i) 6 { 7 try 8 { 9 if (i == 1) 10 { 11 throw new Exception(); 12 } 13 output += "1"; 14 } catch (Exception e) 15 { 16 output += "2"; 17 System.exit(0); // 程序被终止了,下面的代码全部不会执行 18 } finally 19 { 20 output += "3"; 21 } 22 output += "4"; 23 } 24 25 public static void main(String args[]) 26 { 27 foo(0); // i = 134 28 System.out.println(output); 29 foo(1); // i = 134234 30 System.out.println(output); 31 } 32 }
所以,正确答案为 B
public class Test { public static String output = ""; public static void foo(int i) { try { if (i == 1) { throw new Exception(); } output += "1"; } catch (Exception e) { output += "2"; } finally { output += "3"; } output += "4"; } public static void main(String args[]) { foo(0); foo(1); // (24) } }
what is the value of output at line 24?
这里也是考察 try-catch-finally。
在这里,catch(){} 代码块中有一个 return 语句。说明了 return 语句后面的代码不会被执行到。
但是,这里有一个 finally{} 代码块,所以,在执行 return 语句之前会先执行 finally{} 代码块,之后才会执行 return 语句。
所以程序执行到
foo(0);
时,output = "134",程序执行到
foo(1);
时,output = "13423"
所以,答案为 "13423"