Java認證考古題 第二部份 Answer= AB 假定:
11. switch (x) { 12. default :
13. System.out.println (“Hello”); 14. }
下列那兩項是x可以接受的形態?(選兩項) A. byte B. char C. long D. Long E. float F. Short
解:整數型態32位元以下都可以,int/short/char/byte Answer= C
假定: 11. int x = 3; 12. int y = 1; 13. if (x = y) {
14. Systm.out.println (“x = “ + x); 15. } 結果為何? A. x = 1 B. x = 3 C. 編譯失敗。
D. 程式執行後未產生輸出。 E. 在執行時期丟出一個例外。
解:if(?)括弧內必須是boolean值,行13中x=y是int型態,x==y結果才是boolean型態 Answer= E 假定:
11. Float f = new Float (“12”);
12. switch (f) {
13. case 12 : System.out.println(“Twelve”); 14. case 0 : System.out.println(“Zero”); 15. default : System.out.println (“Default”); 16. } 結果為何? A. Zero B. Twelve C. Default D. Twelve Zero Default E. 編譯失敗 Answer= E 假定:
11. for (int i = 0; i<3 ; i++ ) {
12. switch (i) { 13. case 0 : break;
14. case 1 : System.out.print (“one”); 15. case 2 : System.out.print (“two”); 16. case 3 : System.out.print (“three”); 17. } 18. }
19. System.out.println (“done”); 結果為何? A. done
B. one two done C. 編譯失敗
D. one two three done
E. one two three two three done 解:沒有break;敘述中斷底下的會被執行… Answer= A
假定:
11. public void test (int x ) { 12. int odd = x % 2; 13. if (odd) {
14. System.out.println (“odd”); 15. }else {
16. System.out.println (“even”); 17. } 18. }
下列何項陳述是正確的? A. 編譯失敗。
B. “odd”始終為輸出。 C. “even”始終為輸出。
D. “odd”為x奇數值的輸出,而偶數值則為”even”。 E. “even”為x奇數值的輸出,而偶數值則為“odd”。 解:if(?)?必須為boolean值,odd是int型態
Answer= C 假定:
11. boolean bool = true; 12. if (bool = false) {
13. System.out.println(“a”); 14. } else if (bool) {
15. System.out.println(“b”); 16. } else if (!bool) {
17. System.out.println(“c”); 18. } else {
19. System.out.println(“d”); 20. } 結果為何? A. a B. b C. c
D. d E. 編譯失敗
解:行12 bool = false,行12測試沒過,行14因為bool是false也沒過…,再看行16的if,false->true,因此印出c
Answer= E 假定:
11. int i =1,j = -1; 12. switch (i) { 13. case 0,1 : j = 1; 14. case 2 : j = 2; 15. default : j = 0; 16. }
17. System.out.println (“j = “ +j );結果為何? A. j = -1 B. j = 0
C. j = 1 D. j = 2 E. 編譯失敗
解:第13行錯誤,沒有這種用法 Answer= E 假定: 11. int i = 0; 12. while (1) { 13. if ( i == 4) { 14. break; 15. } 16. ++i; 17. }
18. System.out.println(“ i = “ + i ); 結果為何? A. i = 0
B. i = 3 C. i = 4 D. i = 5 E. 編譯失敗
解:第12行while(?),?也是要布林值…如同if Answer= D 假定:
11.int i=1,j=10; 12.do{ 13. if (i>j) { 14. break; 15. } 16. j--;
17. }while(++i<5);
18.System.out.println(“i=”+i+”and j=”+j); 結果為何?
A. i = 6 and j =5 B. i = 5 and j =5 C. i = 6 and j =4 D. i = 5 and j =6 E. i = 6 and j =6 解:自己代 Answer= A 假定:
11.int i=1,j=10; 12.do{ 13. if (i>j) { 14. continue; 15. } 16. j--;
17. }while(++i<6);
18.System.out.println(“i=”+i+”and j=”+j);
結果為何?
A. i = 6 and j =5 B. i = 5 and j =5 C. i = 6 and j =4 D. i = 5 and j =6 E. i = 6 and j =6 Answer= D 假定:
11.int i=1,j=10; 12.do{
13. if (i++>--j) { 14. continue; 15. }
16. }while(i<5);
17.System.out.println(“i=”+i+”and j=”+j); 結果為何?
A. i = 6 and j =5 B. i = 5 and j =5 C. i = 6 and j =4 D. i = 5 and j =6 E. i = 6 and j =6 Answer= E 假定:
11.int x=1,y=6; 12.while(y--){ 13. x++; 14.}
15. System.out.println(“x=”+ x +”y =”結果為何? A. x =6 y =0 B. x = 7 y = 0 C. x = 6 y =-1
+ y); D. x =7 y =-1 E. 編譯失敗。 解:第12行錯誤 Answer= A 假定: 11.int i=0,j=5; 12.tp:for(; ;) { 13. i++; 14. for(; ;) { 15. if (i>--j){ 16. break tp ; 17. } 18. } 19. }
20. System.out.println(“i = ”+ i + ”,結果為何?
j = ” + j );
A. i = 1 , j =0 B. i = 1 , j =4 C. i = 3 , j =4 D. i = 3 , j =0 E. 編譯失敗。
解:break tp;表示跳出tp所在的迴圈,tp是一個標籤,用來表示一個迴圈,如果沒有tp的話,就是找最裏面那層的迴圈
Answer= D 假定:
11.for (int i=0 ; i < 4 ; i+=2){ 12. System.out.println( i+” “); 13. }
14. System.out.println( i ); 結果為何? A. 0 2 4 B. 0 2 4 5
C. 0 1 2 3 4 D. 編譯失敗。
E. 在執行時期丟出一個例外。
解:由於i是宣告在for的迴圈中,只有該範圍可以看到i,第14行看不到i,也就是沒宣告… Answer=A 假定: 10. int i =0 ;
11.for (; i < 4 ; i +=2){
12. System.out.println( i +” ” ); 13. }
14. System.out.println( i ); 結果為何? A. 0 2 4 B. 0 2 4 5 C. 0 1 2 3 4 D. 編譯失敗。
E. 在執行時期丟出一個例外。 Answer=B 假定:
11. boolean flag;int i =0 ; 12. do{
13. flag =false;
14. System.out.println( i++ ); 15. flag = i<10; 16. continue;
17. }while ( ( flag )? true: false ) ; 結果為何?
A. 0 0 0 0 0 0 0 0 0 B. 0 1 2 3 4 5 6 7 8 9 C. 編譯失敗。
D. 程式執行後未產生輸出。 E. 程式進入無窮迴圈。
F. 在執行時期丟出一個例外。 Answer=A 假定:
1. public class Delta{
2. static Boolean foo (char c ) { 3. System.out.println( c ); 4. return true; 5. }
6. public static void main ( String [ ] argv ) { 7. int i =0 ;
8. for ( foo(‘A’); foo(‘B’)&&( i <2 ); foo(‘9. i++; 10. foo(‘D’); 11. 12. } 13. }
C’) ) {
14. } 結果為何? A. ABDCBDCB B. ABCDABCD C. 編譯失敗。
D. 在執行時期丟出一個例外。 Answer=C 假定:
11. for ( int i = min ; i < max ; i++) { 12. System.out.println( i ) ; 13. } 註:先輸出i,再對i++
若min和max為任意整數,下列何項會得出相同的結果? A. for ( int i = min ; i < max ; System.out.println(++i) ) ; B. for ( int i = min ; i++ < max ; System.out.println( i) ) ; C. int i = min ; while (i < max) {
System.out.println( i++ ) ; }
D. int i = min ; do {
System.out.println( i++ ) ; } while (i < max) ; Answer=C 假定:
1. public class Foo{
2. public static void main ( String [ ] args ) { 3. try {
4. System.exit(0) ; 5. } finally {
6. System.out.println(“Finally” ) ; 7. } 8. }
9. } 結果為何? A. Finally B. 編譯失敗。
C. 程式執行後未產生輸出。 D. 在執行時期丟出一個例外。
解:System.exit(0)就是直接結束jvm…底下的都不會執行,立刻離開程式… Answer=A 假定:
1. public class Foo{
2. public static void main ( String [ ] args ) { 3. try { 4. return; 5. } finally {
6. System.out.println(“Finally” ) ; 7. }
8. } 9. } 結果為何? A. Finally B. 編譯失敗。
C. 程式執行後未產生輸出。 D. 在執行時期丟出一個例外。
解:return是從目前的函式返回,在返回函式與結束執行堆疊前,會執行finally的敘述。 x
Answer=A
下列何項陳述是正確的?
A. catch(X x)可以捕捉X子類別。
B. Error class 為一個RuntimeException。
C. 任何可以丟出Error的述句必須包含在 try區塊內。 D. 任何可以丟出Exception 的述句必須包含在try 區塊內。 E. 任何可以丟出RuntimeException的述句必須包含在 try區塊內。
答:除了會丟出Error/RuntimeException的敘述之外,任何會丟出Exception例外的敘述”必須“包含在try中
Answer=”ADEF”
使用throw述句時,下列哪四項可被丟出?(選擇四項) A. Error B. Event C. Object D. Throwable E. Exception F. RuntimeException
解:背吧(參考第八章11頁),也就是問:那些是throwable(含其子類別)…
Answer=C 假定: 11. try {
12. int x = 0 ; 13. int y = 5 / x ; 14. } catch (Exception e){
15. System.out.println(“Exception” ) ; 16. } catch (ArithmeticException ae){
17. System.out.println(“ArithmeticException”18. }
19. System.out.println(“finished” ) ; 結果為何? A. finished B. Exception C. 編譯失敗。
D. ArithmeticException
) ;
解:在補捉例外時,範圍較小的例外要先補捉…也就是繼承機制下的底層例外子類別必須寫在前面 Answer=D
下列何項陳述是正確的?
A. ㄧ個try述句必須至少包含一個相對的catch區塊。可以沒有,有finally也可 B. 多個catch述句可以多次捕捉到相同的例外類別。不行
C. 在某種方法中可能被丟出的Error必須宣告為由該種方法丟出,或是在該方法內完成處理。是checked例外(exception),不是Error
D. 除VM停機的狀況外,如果try 區塊開始執行,則相對的finallly區塊永遠會隨之開始執行。 E. 除VM停機的狀況外,如果try 區塊開始執行,則相對的finallly區塊永遠執行至完畢。(finally中的敘述也有可能發生錯誤,不能保證永遠都會執行完畢)
Answer=D 假定:
class Exc0 extends Exception {} class Exc1 extends Exc0 {} public class Test {
public static void main (String args [] ) { try {
throws new Exc1(); }catch ( Exc0 e0) {
System.out.println(“Exc0 caught”) ; }catch ( Exception e) {
System.out.println(“exception caught”) ; } } }
結果為何? A. Exc0 caught B. excrption caught
C. 由於第2行出現錯誤,編譯失敗。 D. 由於第6行出現錯誤,編譯失敗。
解:throws應為throw,若為throw,則答案是A Answer=A 假定:
20. public float getSalary( Employee e ){ 21. assert validEmployee(e); 22. float sal = lookupSalart(e); 23. assert (sal>0) ; 24. return sal ; 25. }
26. private int getAge(Employee e) { 27. assert validEmployee (e); 28. int age = lookupAge(e); 29. assert (age>0) ; 30. return age ; 31. }
那一行是對判斷機制的不當使用? A. 第21行 B. 第23行 C. 第27行
D. 第29行
解:不要在public的方法中使用assert,且用公開方法的參數 Answer=C
下列哪個片段是不當使用判斷的範例? A. assert (!(map.contains(x ))); Map.add(x); B. if ( x>0) { }else {
assert ( x ==0 ) ; }
C. public void aMethod( int x ) { assert ( x > 0) ; }
D. assert ( invariantConditon( )) ; Return retval ; E. switch(x) {
case 1: break ; case 2: break ;
default: assert ( x == 0) ; 解:同上題 Answer=C 假定:
1. public class Test{
2. public static void main ( String [ ] args ) { 3. int x = 0 ;
4. assert ( x> 0 ) : “assertion failed” ; 5. System.out.println(“finished” ) ; 6. } 7. } 結果為何? A. finished B. 編譯失敗。
C. 丟出一個AssertionError。
D. 丟出一個AssertionError,輸出則為finished。 Answer=B 假定:
1. public class Test{
2. public static void main ( String [ ] args ) { 3. int x = 0 ;
4. assert ( x> 0 ) ?: “assertion passed” ; 5. System.out.println(“finished” ) ; 6. } 7. } 結果為何? A. finished B. 編譯失敗。
C. 丟出一個AssertionError,輸出則為finished。
D. 丟出一個AssertionError,並顯示 ”assertion failed ”。
E. 丟出一個AssertionError,並顯示 ”assertion passed ”。 解:第4行出錯,assert只是單一個”:” ,沒有”?” Answer=”BCE”
下列哪三項陳述是正確的?(選擇三項)
A. 在程式部署完後,判斷檢查通常處於致能狀態。 B. 藉由撰寫程式來處理assert述句的失敗始終是不妥的。 C. 在部署和測試程式時,判斷檢查通常處於致能狀態。
D. 判斷檢查可以依package 、但不可依類別選擇致能或是除能狀態。 E. 判斷檢查可以依package和依類別選擇致能或是除能狀態。 Answer=D 假定:
11. public int validateIndex( int i ){ 12. assert ( i++> 0 ) ; 13. return i ; 14. } 結果為何?
A. 編譯失敗。
B. 若 i 小於0,則會丟出一個錯誤。 C. 若 i 小於1,則會丟出一個錯誤。 D. 第12行是對判斷的不當使用。
解:D,在public方法中用assert去判斷(assert)傳進來的參數…是不適當的 Answer=B 假定:
11. public static void main (String args [] ) { 12. assert args.length >1 ; 13. try {
14. Object obj = (Class.forName(args[0])).newInstance(); 15. System.out.println( obj ) ; 16. }
17. catch (Exception e ) { 18. assert false; 19. }finally {
20. System.out.println(“done”) ; 21. } 22. }
下列何項陳述是正確的?
A. 若判斷處於致能狀態,則輸出始終為”done”。 B. 若判斷處於除能狀態,則輸出始終為”done”。 C. 第12行展示了判斷的正確使用方法。 D. 第18行展示了判斷的正確使用方法。
解:若assert是disabled的,那麼18行的assert(assert false總會發生assertionError)指令會被去除,就不會作用,所以答案是B
Answer=A
下列何項關於Java程式語言的陳述是正確的? A. 判斷運算式不應含有副作用。 B. 判斷運算式的值可以是任ㄧ基本型態。 C. 判斷應用於強制執行公開方法的先決條件。
D. 應始終採用封閉方法來處理因判斷失敗而出現的AssertionError thrown。
Answer=A
下列何項陳述是正確的?
A. 可以依類別逐一使判斷致能或是除能。 B. 條件式編譯用於使被測試的類別以全速執行。 C. 採用判斷來檢查某ㄧ方法中引數的有效性是適宜的。
D. 若判斷失敗,程式設計師可以選擇執行一個回傳述句或是丟出一個例外。 Answer=C 假定:
1. public class Teat{
2. public static void main (String [] argv ) { 3. // insert statement here 4. } 5.}
下列何項述句在插入第3行後會產生以下輸出?
Exception in thread “main” java.lang.AssertionError: true At Test.main(Test.java:3)
A. assert true ; B. assert false ;
C. assert false : “true” ; D. assert false ==true ; E. assert flase : false ;
解:assert 後面接的boolean值若是false,則會產生assertion,”:”後面是要輸出的錯誤值,此題的題目是:true,因此答案是C
Answer=D 假定:
11. public class Test{ 12. public void foo ( ) { 13. assert false ; 14. assert false ; 15. }
16. public void bar ( ) { 17. while(true) {
18. assert false ; 19. }
20. assert false ; 21. } 22.}
下列哪ㄧ行造成編譯失敗? A. 第13行 B. 第14行 C. 第18行 D. 第20行
解:這題的錯誤是跟assert無關的,17~19行的程式寫了一個無窮迴圈,其中沒有敘述跳出該迴圈,導致20行怎麼都不會被執行…,編譯器提示unreachable statement…,就是不會到達的敘述,是多餘的,沒有必要的。
因篇幅问题不能全部显示,请点此查看更多更全内容