java程序員認證考試題庫


第一部分

基礎知識練習

目標

    本章對應於《學生指南》各章的內容分別提供了練習題集,包括:

    ●  第一章Java入門

    ●  第二章數據類型和運算符

    ●  第三章流程控制與數組

    ●  第四章封裝

    ●  第五章繼承

    ●  第六章抽象類與接口

    ●  第七章多態

    ●  第八章異常

    ●  第九章多線程機制

    ●  第十章輸入輸出流

    ●  第十一章使用泛型和集合框架

    ●  第十二章基於Swing的圖形用戶界面(GUI)設計

    ●  第十三章Java事件驅動編程


  第一章練習題(Java入門)

    

1.下列哪項不是JDK所包含的內容?(選一項)

    A.Java編程語言

    B.工具及工具的API

    C.Java EE擴展API

    D.Java平台虛擬機

    

2.下列關於JDK、JRE和JVM的描述。哪項正確?

    A.JDK中包含了JRE,JVM中包含了JRE

    B.JRE中包含了JDK,JDK中包含了JVM

    C.JRE中包含了JDK,JVM中包含了JRE

    D.JDK中包含了JRE,JRE中包含了JVM

    

3.下列哪個工具可以編譯java源文件?

    A.javac

    B.jdb

    C.javadoc

    D.junit

    

4.JDK工具javadoc的作用是哪項?

    A.生成Java文檔

    B.編譯Java源文件

    C.執行Java類文件

    D.測試Java代碼

    

5.以下哪些包是Java標准庫中常用的包?(選三項)

    A.javalang

    B.javaxservlet .http

    Cj ava. io

Djavasql

 

 

 

6.使用JDK工具生成的Java文檔的文件格式是?

AXML格式

B.自定義格式

c.二進制格式

DHTML格式

 

7.以下關於JVM的敘述,哪項正確?(選兩項)

AJVM運行於操作系統之上,它依賴於操作系統

BJVM運行於操作系統之上,它與操作系統無關

CJVM支持Java程序運行,它能夠直接運行Java字節碼文件

DJVM支持Java程序運行,它能夠直接運行Java源代碼文件

 

8.以下關於支持Java運行平台的敘述,哪項錯誤?

AJava可在Solaris平台上運行

BJava可在Windows平台上運行

CJava語言與平台無關。Java程序的運行結果依賴於操作系統

DJava語言與平台無關。Java程序的運行結果與操作系統無關

 

9.以下關於AppletJava程序之間關系的敘述,哪項錯誤?

A. -Applet就是一段Java程序

BApplet是一種特殊的Java程序,它需要運行在Web服務器上

C.Applet是一種特殊的Java程序,它需要運行在Web瀏覽器上

DApplet是一種Java SE平台的應用程序

 

10.以下關於Java HotSpot的描述,哪兩項錯誤?(選兩項)

AJavaHotSpot是一種熱編譯技術,在編譯Java源程序時會被使用

BJava HotSpot是一種熱編譯技術,在運行Java代碼時會被使用

CJava HotSpot是一種熱編譯技術,它只對程序的部分字節碼進行優化

DJava HotSpot是一種熱編譯技術,它會對程序的全部字節碼進行優化


11.環境變量PATH中含有多個路徑時,路徑和路徑之間可以用哪項來隔開?

    A.

    B.  

    C.*

    D:|

    

12CLASSPATH中的“.”的含義是哪項?

    A.省略號

    B.當前目錄

    C.所有目錄

    D.上級目錄

    

13JVM在執行一個Java類時,大致采用以下過程?

    A.執行類中的代碼一>裝載類一>校驗類

    B.校驗類一>裝載類一>執行類中的代碼

    C.裝載類一>執行類中的代碼一>校驗類

    D.裝載類一>校驗類一>執行類中的代碼

    

14.當運行—個Java程序時,傳遞參數的格式是哪項?

    A. java類名參數1,參數2

    B. javac類名參數1參數2

    C. java類名參數1參數2

    D. java類名參數1+參數2

   

15.以下關於Java文件名的敘述,正確的有?(選兩項)

    AJava源文件的擴展名應為.java

    BJava源文件的文件名應與文件中的類名一致

    C. Java字節碼文件的擴展名應為.java

    D. 一個Java源文件中只能包含一個Java

 

              lC

              2D

              3A

              4A

              SACD

              6D

              7AC

              8C

              9B

              10 A D

              11 A

              12 B

              13 D

              14 C

              15 A B

 

第二章練習題(數據類型和運算符)

 

    1.下列哪項不屬於Java語言的基本數據類型?

    Aint

    BString

    Cdouble

    Dboolean

    

2.下列哪項不是int類型的字面量?

    A\u03A6

    B077

    COxABBC

    D20

    

3.下列哪項不是有效的標識符?

    AuserName

    B2test

    C$change

    D_password

    

4.下列哪項是Java語言中所規定的注釋樣式?(選三項)

    A.//單行注釋

    B--單行注釋

    C.  /*

          *單行或多行注釋

          */

    D.  /kk

    *文檔注釋

    */

    

5.下列哪項不是Java語言的關鍵字?

    Agoto

    Bsizeof

    Cinstanceof

    Dvolatile

 

    6.現有如下五個聲明:

    Linel: int a_really_really_really_long_variable_name=5 ;

    Line2: int  _hi=6

    Line3:  int  big=Integer. getlnteger("7”);

    Line4int $dollars=8;

    line5: int %opercent=9;

    哪行無法通過編譯?

    ALine1

    BLine3

    C. Line4

    D. Line5

    

7.現有:

    1.  class Top  {

    2.    static int x=l

    3.    public Top (inty)  {  x*=3;  }

    4.    }

    5.  class Middle extends Top {

    6.    public Middle()  {x+=1;  )

    7.    public  static void main (String  []  args)  {

    8.    Middle m = new Middle();

    9.    System. out .println (x);

    IO.    }

    II.  }

    結果為:

    A.1

    B. 2

    C3

    D.編譯失敗

    

8.現有:

    1.  class Passer f

    2.    static final int X=5

    3.public  static void main (String  []  args)  {

    4.    new  Passer()go (x);

    5.System. out .print (x);

    6,    )

    7.    void go (int x)  {

    8.System. out .print(x++);

    9.    }

    10. }

 

    結果是什么?

    A.55

    B.56

    C.65

    D.66

    

9.現有:

    1.  class Wrench f

    2.public static void main(String  []  args)  {

    3.Wrench w=new Wrench();    Wrench w2=new Wrench();

    4.    w2=go (w, w2)

    5.System.out.print (w2==w);

    6.    }

    7.static Wrench go (Wrench wrl,  Wrench wr2)  {

    8.Wrench wr3=wrl; wrl=wr2; wr2=wr3;

    9.    return wr3;

    10.    }

    11.  }

    結果是什么?

    A. false

    B.  true

    C.編譯失敗

    D.運行的時候有異常拋出

    

10.現有:

    5.  class  Wrench2  {

    6.    int size;

    7.public static void main(String  []  args)  {

    8.Wrench2 w=new Wrench2();

    9.    w.size=II;

    IO.    Wrench2 w2=go(w, w.size);

    II.    System. out .print (w2. size);

    12.    )

    13.    static Wrench2 go(Wrench2 wr. int s)  {

    14.    S=12;

    15。    return wr;

    16.    }

    17.  }

 

    結果為:

    A. 11

    B. 12

    c.編譯失敗。

    D.運行時異常被拋出

    

11.現有:

    class Test2  f

    public  static void main (String  []  args)  {

    short ab,C

    a=l;

    b=2;

    C=a+b

    a+=2

    }

    }

    以上代碼中,哪一句是錯誤的?

    Aa=1

    BC=a+b

    C.  a+=2;

    D.  short ab,C

    

12.表達式:1-2/5+2 'k5的結果是哪項?

    A.  10.6

    B.  9.8

    C.  9

    

13.現有代碼片段:

    String  s="123"

    String sl=S+456;

    請問sl的結果是哪項?

    A. 123456

    B. 579

    C.編譯錯誤

    D.運行時拋出異常

 

14.基本數據類型float的包裹類是哪項?

A. Integer

B. Double

C. Float

D. Character

 

15.現有:

  1.  class  Test4  {

  2.     public static void main (String  []  args)  {

  3.    boolean X=true;

  4.    boolean y=false;

  5.    short Z=42;

  6

  7.    if((z++==42)  &&  (y=true))z++;

  8.if((x=false)  ||    (++z==45))  z++;

  9

  10.    System. out.println(¨z=”+z);

  II.    }

  12.  }

結果為:

A.  Z=42

B.  z=44

C.  Z= 45

D.  z= 46

 

    第二章練習題

 

    參考答案

    1B

    2A

    3B

    4ACD

    5B

    6D

    7D

    8A

    9B

    10 A

    11 B

    12 D

    13 A

    14 C

    15 D

 

第三章練習題

第三章練習題(流程控制與數組)

 

    1.現有:

    class TestApp{

    public  static  void main (String[]  args){

    for (int  i=0; i<lO;i++){

    if(i==3)

    break;

    System. out .print (i);

    }

    }

    }

    程序運行后的輸出是哪項?

    A0123

    B012456789

    C.  0123456789

    D.  012

    

2.程序:

    class   TestApp{

    public  static  void main (String[]  args){

    int x=6

    if (x>l)

    System. out. println("x>l");

    else if (x>5)

    System. out .println("x>5");

    else if (x<10)

    System. out. println("x<lO");

    else if (x<29)

    System. out .println( "x<29");

    else

    System. outprintln(“以上都不是”);

    }

    }

    上述程序運行后的結果是哪項?

    Ax>5

    Bx>l

    C.  x<10

    Dx<29

 

    3.現有:

    class TestApp{

    public  static  void main (String[]  args){

    int [5]   myarray={ 10, 11, 12, 13, 14);

    int sum=0;

    for (int x  :  myarray)

    sum+=x;

    System. out. println( "sum= "+sum);

    }

    }

    上述程序運行后的結果是哪項?

    A. sum=10

    B. sum=70

    C. sum=60

    D. 運行時拋出異常

    

4.下列有關數組的聲明中,正確的是哪項?(選兩項)

    A. int s[10];

    B. int[10]  s

    C. int[5] s={l,2,3,4,5};

    D. int s[];

    

5.已知數組array,其最后一個元素的下標是?

    A. array. size

    B. array. length-l

    C. array. size-l

    D. arraylength

    

6.程序:

    class    TestApp{

    public  static void main (String[]  args){

    int X=5

    switch (x){

    case l

    case 2

    case 3

    System. outprintln(“一季度”);

    break;

    case 4

    case 5

 

    case 6

    System. outprintln(“二季度”);

    break;

    default

    System. outprintln(“三季度以上”);

    break;

    )

    }

    )

    上述程序運行后的結果是哪項?

    A. 一季度

    B.二季度

    c.三季度以上

    D.無輸出

    

7.為將數組myArray的長度由3改為6,現采取以下編碼:

    int[]myArray=new int [3];

    myArray=new  int[6]

    代碼執行后,以下敘述哪項是正確的?

    A.數組myArray的長度已由3改為6,其中前3個元素的值不變,后3個元素

    的值為空。

    B.數組myArray的長度已由3改為6,其中前3個元素的值不變,后3個元素

    需再經過初始化后才能使用。

    C.數組myArray的長度沒有變化。

    D.數組myArray的長度已由3改為6,原來3個元素的值全部丟失。

    

8.現有:

    1.  class  Ifs  {

    2.public  static void main (String  []  args)  {

    3.boolean state=false;

    4.    int i=2

    5if( (++i>2)  &&  (state=true))

    6.i++;

    7.if( (++i>4)  l l  (state=false))

    8.i++;

    9.System.out .println (i);

    10.    }

    11  }

 

    

    結果為:

    A.  6

    B.  5

    C.  4

    D.編譯失敗

    

9.現有:

    3.  public class Tester {

    4.public static void main (String[] args)  {

    5.    intx-5;

    6.    Integer xl=x;  Integer x2=x;

    7.int x3=new Integer(5);

    8.    system..ut.print(x1.equals(x));

    9.    system..ut.print(xl==x);

    lu.    system..ut.print(x2.equals(xl));

    11.    system..ut.print(x2==xl);

    12-    system..ut.print(x2==x3);

    13-    system..ut.print(x2.equals(x3));

    “    l4}

    15.  }

    結果為:

    A.編譯失敗

    B.  falsefalsetruetruetruetrue

    C. truetruetruetruetruetrue

    D.  falsefalsetruetruetruefalse

    E.  truefalsetruefalsefalsetrue

    F.運行時異常被拋出

    

10.現有:

    1.  class Rectangle  {

    2'    public static V.id main(string  []  args)    {

    3.   int[]x=(123);

    4.   x[1]=  (x[1]>1)  ?x[2]:  O;

    5.    System.outprintln(x[1]);

    6.    }

    7.    }

 

    結果為:

    A.3

    B.2

    C.1

    D.0

    

11.現有:

    1class Output  (

    2.public static void main (String[]  args)    {

    3.    int i=5

    4.System.out.print( "4"+i+"");

    5.System.out.print (i+5+"7");

    6.System.out.println  (i+"8");

    7.    }

    8.  }

    結果為:

    A.  9 9722

    B.  9 55758

    C.  45 10758

    D.  45 9722

    

12.以下哪種初始化數組的方式是錯誤的?

    A. String[]names={"zhang",   "wang",   "li");

    B. String  names[]  =new  String [3];

    names [O]  ="zhang";  names [1]  ="wang";   names [2]  ="li";

    C. String[3] names={"zhang", "wang", "li"};

    D. 以上皆正確

    

13.現有:

    1.  class WhileTests  {

    2.public  static void main (String  []  args)  {

    3.    int X=5

    4.    while (++x<4)  {

    5--x;

    6.    }

    7.System.out.println( "x="+x);

    8.    }

    9.  }

 

    結果是什么?

    A.X=6

    B.  X=5

    C.X=2

    D.編譯失敗

    

14.現有:

    1.  class Test2  f

    2.public static void main (String  []  args)  {

    3.    boolean X= true;

    4.    boolean y=false;

    5.    short Z=20;

    6

    7if((x==true)  &&  (y=true))  z++;

    8.    if((y==true) ||  (++z==22))  z++;

    9

    10.    System. out .println( "z="+z)

    11.    }

    12.  }

    結果是什么?

    A.Z=21

    B.  z=22

    C.  z=23

    D.  Z= 24

    

15.現有:

    1.  class Foo  {

    2.public static void main (String  []  args)  {

    3.    int x=O

    4.    int y=4

    5for (int  z=0;  z<3;  Z++;  X++)  {

    6.    if(x>1&++y<10)

    7.    y++;

    8.    }

    9.System. out .println (y);

    10.    }

    11  }

    結果是什么?

    A.7

    B.8

    C10

    D12

 

                            I D

                            2B

                            3C

                            4CD

                            5B

                            6B

                            7D

                            8A

                            9C

                            11 C

                            12 C 

                            13 A

                            14 B

                            15 B

 

第四章練習題(封裝)

    

1.下列有關類、對象和實例的敘述,正確的是哪一項?

    A.類就是對象,對象就是類,實例是對象的另一個名稱,三者沒有差別

    B.對象是類的抽象,類是對象的具體化,實例是對象的另一個名稱

    C.類是對象的抽象,對象是類的具體化,實例是類的另一個名稱

    D.類是對象的抽象,對象是類的具體化,實例是對象的另一個名稱

    

2.下列類Account的構造方法中,聲明正確的是?

    A.  Account (String name){)

    B.  Account (String  name)

    CAccount (name)()

    D.  NewAccount (String name){)

    

3.類Account中字段聲明正確的是哪項?

    A.  class  Account f

    name;

    amount;

    )

    B.  class  Account{

    String name=l.0

    double amount="Mike";

    )

    C.  class  Accountf

    String name;

    double amount;

    )

    D.  class  Account{

    String   name= "Mike,,, double   amount=1000.0;

    )

    

4.類Account中方法聲明正確的是哪一項?

    A.  class  Account f

    deposit()

    )

    B.  class  Accountf

    void deposit()

    }

 

    C.  class  Accountf

    void deposit(){)

    )

    D. class Accountf

    void  deposit{)

    )

    5.下列有關類聲明的代碼片段,哪一項是正確的?

    A. package school;

    import  java. sql.*

    class Student {

    }

    Bimport javasql.*

    package school;

    class  Student f

    )

    C. package school;

    class Student{

    }

    import  java. sql.*j

    D. package school;

    import java. sql.*

    private String name;

    class Student {

    }

    

6.有關new關鍵字的描述正確的是哪項?

    A.創建對象實例的時候可以不使用new關鍵字

    Bnew所創建的對象不占用內存空間

    Cnew會調用類的構造器來創建對象

    Dnew所創建的對象一定存在引用變量

    

7.下列哪些是方法public  int  add (int a)的重載方法?(選三項)

    A.  public  int  add (long a);

    B.  public  void  add (int a)j

    C.  public void add (long a);

    D.  public  int  add (float a);

 

    8.我們定義一個Account類來描述銀行賬戶,銀行賬戶有賬戶名、金額等屬性

    特征,同時有存款、取款等行為特征,下述代碼適合描述的是哪項?

    Aclass  Accountf

    String name;//賬戶

    String amount;  //金額

    Account (String name)(    )

    void deposit (double mount){  //存款

    )

    void withdraw (double mount){  //取款

    }

    )

    Bclass  Accountf

    String name;//賬戶

    doujole amount;  //金額

    Account (double amount){    )

    void deposit (double mount){  //存款

    )

    void withdraw (double mount){  //取款

    )

    )

    Cclass  Accountf

    String name;//賬戶

    double amount;  //金額

    Account (String name){    )

    void deposit (double mount){//存款

    )

    void withdraw (double mount){  //取款

    )

    )

    Dclass Accountf

    String name;//賬戶

    double amount;//金額

    Account (String name){    )

    void deposit(){//存款

    )

    void withdraw(){//取款

    )

    )

 

    9.現有:

    1.  class Banana2  f

    2.    static int X=2

    3.'public static void main (String  []  args)  {

    4.    int X=2; 

    5.Banana2 b=new Banana2()

    6.    bgo(x)

    7.    }

    8.    static  {x+=x;  )

    9.    void go (int x)  {

    10.    ++x;

    11    System. out.println (x);

    12.    }

    13.  }

    結果為:

    A.7

    B.  5

    C.  3

    D.  2

    

10.現有:

    1.  class TestFoo f

    2.    int x;

    3.    String y

    4.int  getX()  {  return  x;  }

    5.String getY()  {return y;  }

    6.    void setX (int  x)  {

    7.    int Z=7

    8.    this.x=x;

    9.    }

    10.  }

    可以添加多少個修飾符來封裝此類?

    A.5

    B.  4

    C.  3

    D.  2

 

    11.定義枚舉如下:

    public  enum  Direction{

    EAST,SOUTH,WEST,NORTH

    )

    F列正確使用該枚舉類型的語句是哪項?

    A. Direction Direction=EAST;

    B. Direction direction=Direction.WEST;

    C. int a- Direction.NORTH;

    n Direction direction=2

    

12.定義類:

    package utils;

    public class Rep{

    public static String twice (String s){return s+s )

    }

    再定義另一個類Demo:

    l.//insert code here

    2.public class Demo{

    3.   public static void main (String[]  args){

    4.System. out .println( twice( "Hello"));

    5.    }

    6}

    在第一行插入哪項代碼,可以使程序正常編譯和執行?

    Aimport utils.*;

    B. import utils.Rep.*;

    C. import static utils.Rep.twice;

    D. static import utils.Rep.twice;

    

13.現有:

    public  class  TestDemo{

    private int X-2

    static int y=3

    public  void method(){

    final int i=100;

    int j  =10;

    class Cinner {

    public void mymethod(){

    //Here

    }

    }

    }

    }

 

Here處可以訪問的變量是哪些?(選三項)

AX

 B.  y

 C.  j

 D.  i

 

14.現有如F包結構:

    com

    |一一X

    |    |一一Alpha.class

    |    |

    |    |一一y

    I         |一一Beta.class

    |

    |l-- Gamma.class

  和類:

    class Test  {  Alpha a;  Beta b; Gamma c;  }

  哪三個必須加入到類Test中,以使其通過編譯?(選三項)

  A. package y

  B. package com;

  C. import com.x.y.*;

  D. import com.x.*;

  

15.現有2個文件:

    1package x;

    2. public class X{

    3.public static void doX()  {System.out.print("doX");}

    4.  }

  和:

    1.  class Find{

    2.public static void main(String  []  args)  {

    3.    //insert code here

    4.    }

    5.  }

    哪兩行分別插入到類Find的第3行將編譯並產生輸出“doX”?(選兩項)

    AdoX()

    B. XdoX()

    CxXdoX()

    D. x.X myX=new x.X();myX.doX();

 

    1D

    2A

    3C

    4C

    5A

    6C

    7 ACD

    8C

    9C

    10 D

    11  B

    12 C

    13 A B D

    14 BCD

    15 C D

 

第五章練習題(繼承)

 

    1.下列關於繼承優點的敘述正確的是哪幾項?(選三項)

    A.可以創建更為特殊的類型

    B.消除重復代碼

    C.執行效率高

    D.便於維護

    

2.在子類中調用父類中被覆蓋的方法時需要使用哪項關鍵字?

    Athis

    B.super

    Cnew

    D.以上都不是

    

3.現有

    public class Parentt

    public void change (int x){)

    )

    public class Child extends Parent{

    //覆蓋父類change方法

    }

    下列哪個聲明是正確的覆蓋了父類的change方法?

    A.  protected void change (int x){}

    B.  public void change(int x,  int y){}

    C.  public void change (int x){}

    D.  public void change (String s){}

    

4.如果想要一個類不能被任何類繼承的話,需要使用哪個關鍵字來修飾該類?

    A.  abstract

    B.  new

    C.  static

    D.  final

 

    5.為了使得System.out.println()輸出對象引用的時候得到有意義的信

    我們應該覆蓋Object t{-的哪個方法?

    A.equals

    B.toString

    ChashCode

    Dnotify

    

6.現有:

    public class Pet()

    public class Cat extends Pet{)

    執行代碼

    Cat c- new Cat()

    Pet p=  (Pet)c

    后下列哪項是正確的?

    A. Pet p=(Pet)c運行錯誤

    B. Pet p=(Pet)c編譯錯誤

    C. Pet p= (Pet)c止常執行

    D.以上都不對

    

7.程序:

    public class Pet{

    public void speak(){

    System.out.print"pet");

    }

    }

    public class Cat extends Pet{

    pulolic void  speak(){

    System.out.print("Cat")

    }

    }

    public class Dog extends Pet(

    public  void  speak(){

    System.out.print("Dog");

    }

    }

    執行代碼

    Pet[]  p=  {new Cat (),new Dog(),nex Pet()};

    for (int i=O;i<p.length;i++)

    p[i] .speak()

 

    后輸出的內容是哪項?

    B. Cat Cat Cat

    C. Cat Dog Dog

    D. Cat Dog Pet

    

8.現有:

    1.  class Dog{  )

    2.  class Harrier extends Dog  {  )

    3

    4.  class DogTest{

    5.public  static void main (String  []  args)  (

    6.    Dog dl=new Dog()

    7.Harrier hl=new Harrier()

    8.    Dog d2=hl;

    9.Harrier h2=  (Harrier) d2;

    10.    Harrier h3=d2;

    11.    }

    12.  }

    下面哪一項是正確的?

    A.2Dog對象被創建

    B.2Harrier對象被創建

    C.3Harrier對象被創建

    D.編譯失敗

    

9.現有:

    2.  class Cat  {

    3.Cat (int c)  {System.out.print {"cat"+c+" ");  }

    4.    }

    5.  class SubCat extends Cat  {

    6.SubCat (int c){super (5); System.out.print ("cable");}

    7.    SubCat()  {  this (4);  }

    8.public static void main (String  []  args)  {

    9.SubCat s= new SubCat();

    10.    }

    11.  }

    結果為:

    A. cat5

    B. cable

    C. cat5 cable

    D. cable cat5

 

 

10.現有:

1. class Guy {String greet()    {return "hi";  }  }

2.  class Cowboy extends Guy  (  String greet()    (  return "howdy  ¨;    )  )

3.  class Surfer extends Guy  (String greet()    (return "dude! "; }  }

4

5.  class Greetings  {

6.public static void main (String  []  args)    {

7.Guy  []  guys =  ( new Guy(), new Cowboy(), new Surfer()  };

8.    for (Guy g:  guys)

9.System.out.print (g.greet()};

10.    }

11.  }

    結果為:

    A. hi howdy dude!

    B.運行時異常被拋出。

    c.第7行出現一個錯誤,編譯失敗。

    D.第8行出現一個錯誤,編譯失敗。

   

 11.現有:

    1.  class Over  {

    2.int dolt (long x)  {  return 3;  }

    3.  }

    4

    5. class Under extends Over  {

    6.    //insert code here

    7.  }

    和四個方法:

    short dolt (int y)  {  return 4;  }

    int dolt(long Xr long y)  {  return 4;  }

    private int dolt(short y)  {  return 4;  }

    protected int dolt (long x)  {  return 4;  }

    分別插入到第6行,有幾個可以通過編譯?

    A.  1

    B.  2

    C.  3

    D.  4

 

    12現有

      1.  class Beverage {

      2.     Beverage ()  {  System.out.print ("beverage ");  }

      3.  }

      4.  class Beer extends Beverage {

      5.   public static void main{string [] args) {

      6.        Beer b = new Beer (14) ;

      7.   }

      8.   public int Beer(int x) {

      9.       this () ;

      10.      System.out.print ("beerl") ;

      11.   }

      12.  public Beer() { System.out.print("beer2 "); }

       13. }

    結果是什么?

     A. beerl beverage

     B. beer2 beverage

     C. beverage beer2 beerl

     D.編譯失敗

      

     13.現有:

       1.  class Bird {

       2.   void talk() { System.out.print("chirp "); }

       3.  }

       4.  class Parrot2 extends Bird {

       5.   protected void talk() { System.out.print("hello ");

       6.   public static void main(String [] args) {

       7.      Bird [] birds = {new Bird(), new Parrot2 () };

       8.     for( Bird b : birds)

        9.          b.talk () ;

        10.   }

        11. }

    結果是什么 ?

     A. chirp chirp

     B. hello hello

     C. chirp hello

     D:編譯錯誤

 

  14.現有:

    1class SuperFoo(

    2.SuperFoo doStuff (int x)  {

    3.return new SuperFoo();

    4.    }

    5.  }

    6

    7. class Foo extends SuperFoo  {

    8.    //insert code here

    9.  }

  和四個聲明:

    Foo doStuff (int x)  {  return new Foo();  }

    Foo doStuff (int x)  {  return new SuperFoo();  }

    SuperFoo doStuff(int x)  {  return new Foo();  }

    SuperFoo doStuff(int y)  {  return new SuperFoo();  }

  分別插入到第8行,有幾個可以通過編澤?

   A.  1

   B.  2

   C.  3

   D. 4

  

15.現有:

    1.  class HorseRadish  {

    2.    //insert code here

    3.protected HorseRadish (int x)    {

    4.System.out.println ("bok choy");

    5.    }

    6.    }

    7. class Wasabi extends HorseRadish  {

    8.public static void main (String  []  args)    (

    9.Wasabi w- new Wasabi();

    10,    }

    11.  }

    分別插入到第2行,哪兩項允許代碼編譯並產生”bok choy”輸出結果?(選

    兩項)

    A. protected HorseRadish()  {this (42)}

    B.  protected HorseRadish()  {}

    C.  //just a comment

    D.  protected  HorseRadish()  {  new HorseRadish (42);}

 

參考答案

                                                                      .

   1ABD

   2B

   3C

   4D

   SB

   6A

   7D

   8D

   9C

   10 A

   11 D

   12 D

   13 C

   14 D

   15 AD

 

第六章練習題(抽象類與接口)

 

    1.下列有關抽象類的敘述正確的是哪項?

    A.抽象類中一定含有抽象方法

    B.抽象類的聲明必須包含abstract關鍵字

    C.抽象類既能被實例化也能被繼承

    D.抽象類中不能有構造方法

 

    2.下列有關抽象方法敘述正確的是哪項?(選兩項)

    A. 抽象方法和普通方法一樣,只是前面多加一個修飾符asbtract

    B.抽象方法沒有方法體

    c.抽象方法可以包含存任何類中

    D.包含抽象方法的類的具體子類必須提供具體的覆蓋方法

   

    3.下列有關接口的敘述錯誤的是哪項?

    A.接口中只能包含抽象方法和常量

    B.一個類可以實現多個接口

    C.類實現接口時必須實現其中的方法

    D.接口不能被繼承

   

    4.下列關於接口的定義哪項是正確的?

    A.  interface C{int a)

    B. public interface A implements B  {)

    C.  public interface A  {int a();  )

    D.  abstract interface D  {)

 

  5.現有:

    1.  interface Animal  f

    2.    void eat()

    3.    }

    4

    5.  // insert code here

    6

    7. public class HouseCat implements Feline  {

    8.    public void eat()    {  }

    9.  }

  和以下三個接口聲明:

    interface Feline extends Animal  (  )

    interface Feline extends Animal  {void eat();    }

    interface Feline extends Animal  {void eat()    {  }  }

  分別插入到第5行,有多少行可以編譯?

  A.  0

  B.  1

  C.  2

  D.  3

  

   6.現自:

    1.  interface Color {  }

    2. interface Weight  {  }

    3.  //insert code here

  和以下足六個聲明:

    class Boat extends Color, extends Weight  {  }

    class Boat extends Color and Weight  {  }

    class Boat extends Color, Weight  {  }

    class Boat implements Color,  implements Weight  {  }

    class Boat implements Color and Weight  {  }

    class Boat implements Color, Weight  {  }

  分別插入到第3行,有多少行可以編譯?

  A.  0

  B.  1

  C.  2

  D.  3

 

    7.現有:

    1. abstract class Color  {

    2.protected abstract  String getRGB();

    3.  }

    4

    5. public class Blue extends Color  {

    6.    //insert code here

    7.  }

    和四個聲明:

    public String getRGB()  {  return "blue";  }

    String getRGB()  {  return  "blue";  )

    private  String getRGB()  {  return  "blue";  }

    protected String getRGB()  {  return "blue";  )

    分別插入到第6行,有幾個可以通過編譯?

    A.  0

    B.  1

    C.  2

    D.  3

    

    8.現有:

    1. abstract class Color2  {

    2.    //insert code here

    3.  }

    4

    5. public class Blue2 extends Color2  {

    6.public  String getRGB()  {  return  "blue";  }

    7.  }

    和4個聲明:

    public abstract  String getRGB()

    abstract  String getRGB();

    private abstract  String getRGB()

    protected abstract String getRGB();

    分別插入到第2行,有多少行可以編譯?

    A.  O

    B.  1

    C.  2

    D   3

 

    9.現有:

    1.  class Top  {

    2.    static int X=l

    3.    public Top()  {  x*=3;  )

    4.    }

    5.  class Middle extends Top  {

    6.public  Middle()    {x+=l;  }

    7.public static void main(String  []  args)  {

    8.Middle m=new Middle();

    9.System.out.println (x)j

    10.    }

    11.  }

  結果是什么?

    A.  2

    B.  3

    C.  4

    D.編譯失敗

 

   10.現有兩個文件:

    1. package X

    2. public class X  {

    3. public static void doX()  {System.out.print ("doX");  }

    4.  }

  和:

    1import x.X;

    2. class Find  {

    3.    publiC static void main (String  []  args)    {

    4.    X myX=new X();    myX.doX();

    5.    X.doX()

    6.    x.X.aoX()

    7.     x.X myX2=new x.X();    myx2 .doX();    

    8.    }    

    9.  }

    結果為:

    A. Find類中第4行出現一個錯誤,編譯失敗。

    B. Find類第5行出現一個錯誤,編譯失敗。

    C. Find類第6行出現一個錯誤,編譯失敗。

    D. doX doX doX doX

 

    11.現有:

     1. class Tree {

     2.   private static String tree = "tree ";

     3.     String getTree ()  {  return tree;  }

     4.  }

     5.  class Elm extends Tree {

     6.   private static String tree = "elm ";

     7.     public static void main (String  []  args)  {

     8.      new Elm() .go (new Tree())  ;

     9.    }

    10.    void go (Tree t)  {

    11.           String  s =  t.getTree () +Elm.tree  +  tree  +   (new

           

                       Elm() .getTree ()) ;

    12.      System.out.println (s) ;

  

    結果為:

               A. elm elm elm elm

               B. tree elm elm elm

               C. tree elm elm tree

               D. tree elm tree elm

            

    12.現有:

     1. interface Animal {

     2.    void eat () ;

     3. }

     4.

     5. //insert code here

     6.

     7. public class HouseCat extends Feline {

     8.  public void eat() { }

     9. }

     和五個申明

abstract class Feline implements Animal { }

abstract  class  Feline  implements  Animal  {  void eat () ;  }

abstract class Feline implements Animal { public void eat();}

abstract class Feline implements Animal { public void eat() {}  }

abstract class Feline implements Animal { abstract public void eat();}

     A. 1

     B. 2

     C. 3

     D.4

 

·  13.現有:

    1. interface  I  {  void go();  }

    2

    3. abstract class A implements I { }

    4

    5. class C extends A  {

    6.    void go(){  )

    7.  }

  結果是什么?

  A.代碼通過編譯

  B.由於第1行的錯誤導致編譯失敗

  C.由於笫3行的錯誤導致編譯失敗

  D.由於第6行的錯誤導致編譯失敗

 

   14.現有:

    1.  interface Data {public void load();}

    2. abstract class Info {public abstract void load();}

    下列類定義中正確使用DataInfo的是哪項?

    A. public class Employee implements Info extends Data  {

    public void load()  {*do something*)

    )

    B.public class Employee extends Inf.implements Data{

    public void load()  {*do something*}

    }

    c.public class Empl.yee implements Inf extends Data{

    public void Data.1oad()  {* do something*}

    public void load(){*do something*}

    )

    D.public class Employee extends Inf implements Data  {

    public void Data.1oad()  {*do something*)

    public void info.1oad(){/*do something*/)

    )

 

  15. 下列代碼正確的是哪項?

  A. public class Session implements Runnable, Clonable{

       public void run ();

            public Object clone () ;

                    }

  B. public class Session extends Runnable, Cloneable {

      public void run() {/*do something*/}

      public Object clone() {/*make a copy*/}

                 }

  C. public abstract class Session

         implements Runnable, Clonable {

      pu)olic void run() {/*do something*/}

      public Object clone() {/*make a copy*/}

       }

  D. public class Session

         implements Runnable, implements Clonable {

      public void run() {/*do something*/}

      public Object clone() {/*make a copy*/}

      }

 

參考答案

    1B

    2BD

    3D

    4C

    5C

    6B

    7C

    8D

    9C

    10 D

    11  C

    12 C

    13 D

    14 B

    15 C

 

第七章練習題(多態)

 

    1.下列自‘關多態的敘述正確的是哪項?(選兩項)

    A.父類的引用指向子類的實例是一種多態

    B. 子類的引用指向子類的實例是一種多態

    c.接口的引用指向實現該接口類的實例是一種多態

    D.抽象類的引用指向抽象類的實例是一種多態

   

    2Java中方法綁定有哪些形式?(選兩項)

    A.編譯時刻綁定

    B.運行時刻綁定

    c.靜態綁定

    D.私有綁定

    

    3.表達式"hello" instance of String返回的值是哪項?

    A.   true

    B.  false

    C.  1

    D.  0

   

    4.求平方根方法public static double sqrt (double a)可以傳遞的參數

    類型有哪些?(選三項)

    A. byte

    Bfloat

    C. String

    D. long

   

    5.涉及類MyClass的方法簽名足public void  find(MyClass a),那么該

    方法可接收的實際參數的類型可以是哪些?(選兩項)

    A. MyClass類的類型

    B. MyClass子類的類型

    C. Object類型

    D.所有接口

 

    6.使用下列哪些關鍵字可以判定實參的具體類型?

    A. as

    B. is

    C. instanceof    

    D. extends

 

    7.  現有:

    class Pencil  {

    public void write (String content){

    System.out.println ("Write"+content);

    }

    }

    class RubberPencil extends Pencil{

    public void erase (String content){

    System.out.println ("Erase"+content);

    }

    }

    執行下列代碼的結果是哪項?

    Pencil pen=new RubberPencil();

    pen.write ("Hello")

    pen.erase ("Hello");

    A. Write Hello

       Erase Hello

    B. Erase Hello

       Write Hello

    C.編譯錯誤

    D.運行時拋出異常

   

    8.  現有:

    class Pencil  {

    public void write (String content){

    System.out.println ("Write"+content)

    }

    }

    class RubberPencil extends Pencil{

    public void write (String content){

    System.out.println ("Rubber Write"+content);

    }

    public void erase (String content){

    System.out.println ("Erase "+content);

    }

    }

 

    執行下列代碼的結果是哪項?

    Pencil pen=new RubberPencil()

    pen.write("Hello")

    A.  Write Hello

    B.  Rubber Write Hello

    C.編譯錯誤

    D.運行時拋出異常

   

    9  下列哪些方法是在編譯時刻綁定的?(選三項)

    A.靜態方法

    B. private方法

    Cfinal方法

    D.private方法

   

    10.現有:

    class Pencil  {

    public void write (String content){

    System.out.println( "Write",+content){

    }

    }

    class RubberPencil extends Pencil{

    public void write (String content){

    System.out.println("Rubber Write"+content)

    }

    public void erase (String content){

        System.out.println( "Erase "+content);

    }

    }

    執行下列代碼的結果是哪項?

    Pencil  pen=new  Pencil();

    (( RubberPencil) pen).write( "Hello");

    A. Write Hello

    B.  Rubber Write Hello

    c.編譯失敗

    D.運行時拋出異常

 

    1 1.現有:

    class TestA  {

    public void start()  {  System.out.println("TestA");  }

    }

    public class TestB extends TestA  {

    public void start()  {  System.out.println("TestB");  }

    public static v.id main(string[]  args)  (

    ((TestA)new TestB()).start();

    }

    }

    運行結果是哪項?

    A.  TeStA

    B.  TeStB

    c.編譯失敗

    D.運行時拋出異常

 

    12.現有:

    class A  {public String name="a"}

    class B extends A {public String name="b"}

    執行如下代碼后的結果是哪項?

    A a=new B()

    System.out.println(a.name);

    A.  a

    B.  b

    c.編譯失敗

    D.運行時拋出異常

    

    13.現有:

    1  Interface F{}

    2  class A implements F{}

    3  class B extends A{}

    4  class C extends B{

    5    public static void main(String[]  args){

    6    B b=new B()

    7    //inSert C0de here

    8    }

    9    }

 

    下列哪行代碼插入到第7行,將拋出java.lang.ClassCaseException異常7

    A.   A a=b;

    B.  F f=  (C)b

    C.  F f=  (A)b

    D.  B bb=  (B)(A)b

   

14.現有:

1.  class Guy  {  String greet()  {  return "hi";  }  j

2.  class Cowboy extends Guy  {  String greet()  {  return. "howdy";}}

3.  class  Wrangler  extends  Cowboy  {  String  greet()  {  return  "orch!"; } }

4

5.  class Greetings2  {

6.   public  static void main (String  []  args)  {

7.     Guy g=new Wrangler();

8.    Guy g2=new Cowboy()

9.     Wrangler w2=new Wrangler();

10.    System. out .print (g.greet()+g2.greet()+w2 .greet())

11.    }

12.  }

    結果是什么?

    A. hi hi ouch!

    B. ouch!  howdy  ouch!

    C. hi howdy ouch!

    D.編譯失敗

    E.運行的咐候有異常拋出

   

    15.現有:

    class ClassA  {}

    class ClassB extends ClassA  {)

    class ClassC extends ClassA  {)

    以及:

    ClassA p0=new ClassA();

    ClassB pl=new ClassB()

    ClassC p2=new ClassC()

    ClassA p3=new ClassB()

    ClassA p4=new ClassC()

 

·    下列哪些是正確的?(選三項]

    Ap0=pl;

    Bp1 =p2;

    Cp2=p4;

    Dp2 = (ClassC)pl;

    Ep1 = (ClassB)p3;

    Fp2 =  (Classc)p4;

 

參考答案

  1AC

  2AB

  3A

  4ABD

  5AB

  6C

  7C

  8B

  9ABC

  10 D

  11 B

  12 A

  13 B

  14 B

  15AEF

 

第八章練習題(異常)

 

    1Java語言中異常的分類是哪項?

    A.運行時異常和異常

    B.受檢異常和非受檢異常

    C.錯誤和異常

    D.錯誤和運行時異常

  

    2.所有異常的父類是哪項?

    A.  Throwable

    B.   Error

    C.  RuntimeException

    D.  Exception

  

    3.關於try...catch...finally結構,描述正確的是哪項?  (選兩項)

    A.可以有多個catch

    B.只能有一個catch

    C.可以沒有catch

    Dfinally必須有

   

    4.下列屬於非受檢異常的是哪項?

    ASQLException

    B. IOException

    C. NullPointerException

    DOutOfMemoryError

 

    5.假設有自定義異常類ServiceException,那么拋出該異常的語句正確的是

    哪項?

    A. raise ServiceException

    B. throw new ServiceException()

    C. throw ServiceException

    D. throws ServiceException

 

    6.在方法的聲明中,要求該方法必須拋出異常時使用哪個關鍵字?

    A. throw

    B. catch

    C. finally

    D. throws

    

    7.現有:

    1.  class Number{

    2.     public static void main(String  []  aras)  {

    3.    try  {

    4.          System.out.print (Integer.parselnt ("forty"))

    5.          } catch (RuntimeException r)  {

    6.           System.out.print ("runtime");

    7.       } catch  (NumberFormatException e)  {

    8.    system..ut.print("number");

    9.     }

    10.    }

    11.  }

    結果是什么?

    A.  number

    B.  runtime

    C.  forty number

    D.編譯失敗

    

    8.現有:

    9.  void topGo()  {

    10.    try  {

    11.    middleGo()

    12.      )  catch  (Exception e)  {

    13.     System.out.print("catch");

    1 4.    }

    15.  }

    1 6.  void middleGo()  throws Exception  {

    17.    go()

    1 8.    system.out.print("late middle");

    1 9.  }

    2. void go()  throws ExceptiOn  {

    21.    throw new Exception();

    22.  }

 

如果調用 topGo () ,則結果為:

A. late middle

B. catch

C. late middle catch

D. catch Iate middle

 

9.現有 

 1. class Calc {

 2.  public static void main(String [] args) {

 3.    try {

 4.         int x = Integer.parselnt ("42a") ;

 5.     //insert code here

 6.         System.out.print ("oops");

 7.    }

 8.   }

 9. }

 下面哪兩行分別插入到第五行,會導致輸 "oops" ? (選兩項)

 A. } catch (IllegalArgumentException e) {

 B. } catch (IllegalStateException c) {

 C. } catch (NumbelFormatException n) {

 D. } catch (ClassCastException c) {

   

 10.現有:

 1. class Flow {

 2.   public static void main(String [] args) t

 3.    try {

 4 .              System. out .print ("before") ;

 5 .                  doRiskyThing ( )  ;

 6.          System.out.print ("after ") ;

 7.    } catch (Exception fe) {

 8.          System.out.print ("catch") ;

 9.     }

 10 .          System. out .println ( " done") ;

 11.   }

 12.  public static void doRiskyThing() throws Exception{

 13.   // this code returns unless it throws an Exception

          }}

 可能會產生哪兩項結果 ?(選兩項)

 A. before catch

 B. before after done

 C. before catch done

 D. before after catch

 

  11.現有:

  1.  class Birds {

  2.     public static void main (String  []  args)  {

  3.    try {

  4.          throw new Exception () ;

  5.    } catch (Exception e) {

  6.      try {

  7.            throw new Exception () ;

  8.           }  catch  (Exception e2)  {  System.out.print ("inner

          "); }

  9.              System. out.print ( "middle" ) ;

  10.    }

  11.      System.out.print ("outer") ;

  12.   }

  13. }

   A. inner outer

   B. middle outer

   C. inner middle outer

   D .編譯失敗

         

   12.現有:

   1.   class  Parser extends  Utilis  {

   2.     public static void main (String  []  args)  {

   3 .          try  {  System. out.print (new  Parser ( ) .getlnt ("42")) ;

   4.     }  catch (NumberFormatException n) {

   5 .              System.out .println ( "NFExc" ) ;   }

   6.    }

   7.     int getlnt (String arg)  throws NumberFormatException{

   8.       return Integer.parselnt (arg) ;

   9.    }

   10. }

   11. class Utils {

   12.    int getlnt (String arg)  {  return 42;  }

   13. }

    紿果為 :

    A. NFExc

    B. 42

    C. 42NFExc

    D..編譯失敗

 

13.現有:

    1. class Parser extends Utils  (

    2.public static void main (String[]  args)    {

    3.try{System.out.print (new Parser().getlnt("42"));

    4.    } catch (Exception e)    {

    5.System.out.println("Exc");  }

    6.    }

    7.int getlnt (String arg) throws Exception  (

    8.return Integer.parselnt (arg);

    9.    }

    10.  }

    11. class Utils  {

    12.    int getlnt (String arg)    {return 42;  }

    13.  }

    結果為:

    A. 42

    B. Exc

    C. 42Exc

    D.編譯失敗

 

   14.現有:

    1.  class Propeller2  {

    2.   pulolic static void main (String[]args)//add code here?

    3.    {  new Propeller2().topGo();  }

    4

    5.void topGo()  //add code here?

    6.    {   middleGo();  }

    7

    8.void middleGo()  //add code here?

    9.    {   go();  System.out.println ("late middle");  }

    void go()  //add code here?

    12.    {throw new Exception();  }

    13.  }

    為使代碼通過編譯,需要在哪一行加入聲明throws Exception?

    A.只在第11

    B.在第8行和第11

    C.在第5行、第8行和第11

    D.在第2行、第5行、第8行和第11

 

    15.現有

    1.  class Parser extends Utils {

    2.     public static void main (String  []  args)  {

    3.        try  {  System.out.print (new Parser () .getlnt ("42")) 

    4.     }  catch (Exception e) {

    5.          System.out.println ("Exc") ;  }

    6.    }

    7.     int getlnt (String arg)  throws Exception  {

    8.       return Integer.parselnt (arg) ;

    9.   }

    10. }

    11. class Utils {

    12.    int getlnt ()  {  return 42;  }

    13. }

    結果是什么?

     A. 42Exc

     B. Exc

     C. 42

     D.編譯失敗

 

   參考答案 

    1B

    2A

    3AC

    4D

    5B

    6D

    7D

    8B

    9 A C

    10 B C

    11 C

    12 B

    13 D

    14 D

    15 C

 

第九章練習題(多線程機制)

 

    1.線程由以下哪些部分組成?(選三項)

    A.虛擬的CPU

    BCPu執行的代碼

    C.支持代碼工作的數據

    D.進程

    

    2.創建線程的時候必須實現哪項接口?

    A.  Runnable

    B.  Thread

    C.  Run

    D.  Start

    

    3.啟動一個線程的方法是哪項?

    A. join()

    B.  run f)

    Cstart()

    Dsleep()

    

    4.當一個處於阻塞狀態的線程解除阻塞后,它將回到哪個狀態?

    A.運行中狀態

    B.結束狀態

    C.新建狀態

    D.可運行狀態

    

     5.可以通過繼承哪個類來創建線程?

    A. Thread

    BRunnable

    Ctart

    Drun

 

、    6.為了保證方法的線程安全,聲明方法的時候必須用哪個修飾符?

    Anew

    B. transient

    C. void

    D. synchronized

    

    7.線程的默認優先級是哪項?

    A.  0

    B.  1

    c.   5

    D.  10

 

    8.現有:

    1. class Thread2 implements Runnable  (

    2.    void run()  {

    3.System.out.print ("go¨);

    4.    }

    5

    6.public static void main(String  []  args)  {    .

    7.Thread2 t2=new Thread2()

    8.Thread t=new Thread(t2);

    9.    t.start()

    10.    }

    11.  }

    結果為:

    A. go

    B.運行時異常被拋出

    c.代碼運行,無輸出結果

    D.編譯失敗

  

    9.程序員想要創建一個名為MyThread的類以便在main方法中用Thread實例

    化。對於下面三行:

    MyThread必須繼承Thread

    MyThread必須實現Thread

    MyThread必須覆蓋public void run()

 

    有幾行是正確的7

.  A.  0

    B.  1

    C.  2

    D. 3

 

    10.現有:

    1.  class ThreadBoth extends Threaa implements Runnable  {

    2

    3.public void run()  (System.out.print("hi");  }

    4

    5.public static voicl main (String  []  args)  {

    6.Thread tl=new ThreadBoth():

    7.Thread t2 = new Thread (tl):

    8.    tl.run()

    9.    t2.run()

    10.    }

    11.  }

    結果為:

     A. hi hi

     B. hi

     C.編譯失敗

     D.運行時異常被拋出

    

    11.現有:t是一個合法的Thread對象的引用,並且t的合法run()方法如下:

    9.  public void run()  {

    10.    System.out.print ("go")

    11.    }

    及:

    18.  t.start()

    19.  t.start()

    1 n    t.run()

    哪一個是結果?

    A. go go

    B. go go go

    C. go之后跟着一個異常

    Dgo go之后跟着一個異常

 

    12.現有:

1. class ThreadExcept implements Runnable  {

2.    public void run()  {  throw new RuntimeException("exception ");  }

3.

4.    public static void main(Stri_ng  []  args)  {

5.    new  Thread (new  ThreadExcept()).start();

6.    try  {

7.     int x=Integer.parselnt (args [0])

8.    Thread. sleep (x)

9.     System.out.print("main");

10.    } catch (Exception e)  {  }

11.    }

12.  }

   和命令行:  java ThreadExcept l000

   哪一個是結果?

   Amain

   B.編譯失敗

   C. main java.lang.RuntimeException: exception

   D.代碼運行,但沒有輸出

 

   13.現有:

   5.  class Order2 implements Runnable  {

   6.    public void run()  {

   7.for (int x- o;  x<4;  x++)  {

   8.try{Thread.sleep(100);  )catch  (Exception e)  {  }

   9.    System.out.print("r");

   10.    }  }

   11.    public static void main(string  []  args)  {

   12.    Thread t=new Thread(new order2());

   13.    tstart()

   14.    for(int x=0;  x<4;  x++)  {

   15.    //insert code here

   16.    System.out.print("m");

   17.  }  }  }

    哪一個插入到第15行,最有可能產生輸出 rmrmrmrm?

    A.  Threadsleep(1)

    B.  Threadsleep(100)

    C.  Thread.sleep(1000);

    D.  try{  Thread.sleep(1);  )  catch  (Exception e)  {  }

    E.  try{Thread.sleep(100);  )  catch  (Exception  e)  {  }

    F.  try{Thread.sleep(1000);  )catch  (Exception  e)  {  )

 

    14.現有:

’   1.  class Waiting implements Runnable  {

     2.    boolean flag=false;

     3.public  synchronized void run()  {

     4.    if  (flag)  {

     5.    flag=false;

     6.System.out.print ("1");

     7.    try  {  this.wait();  )  catch  (Exception e)  {  }

     8.System.out.print ("2")

     9.    }

     10.    else  {

     11.    flag=true;

     12.    System.out.print ("3")

     13.    try{Thread.sleep (2000); } catch(Exception e)  {}

     14.    System.out.print ("4")

     15.    notify()

     16.    }

     17.    }

     18.    public static void main (String  []  args)  {

     19.    Waiting w=new Waiting()

     20.    new Thread (w) .start()

     21.    new Thread (w) .start()

     22.    }

     23.  }

     以下哪兩項是止確的?(選兩項)

     A.代碼輸出l 3 4

     B.代碼輸出3 4 1

     C.代碼輸出l 2 3 4

     D。代碼輸出1 3 4 2

     E.代碼運行完畢

     F.代碼不會完成

 

  5. class Order implements Runnable {

  6. public void run ()  {

  7. try { Thread.sleep (2000) ;  } catch (Exception e)

  8. System.out.print("in") ;

  10. public static void main (String [] args)  {

  11. Thread t = new Thread (new Order ()) ;

  12. t.start () ;

  13. System.out.print ("pre ") ;

  14. try { t.join () ;  } catch (Exception e)  { }

  15. System.out.print ("post") ;

  可產生哪兩項結果? (選兩項)

  A. pre in post

  B. pre in

  C. in post pre

  D. in pre post

  E. pre post in

 

  

     參考答案

     1ABD

     2A

     3C

     4D

     SA

     6D

     7C

     8D

     9A

     10 A

     11  C

     12 C

     13 E

     14 B F

     15 A D

 

第十章練習題(輸入輸出流)

 

    1.下列哪項是Java語言中所定義的字節流?

    AOutput

    BReader

    CWriter

    DInputStream

    

    2.在輸入流的read方法返回哪個值的時候表示讀取結束?

    A.  0

    B.  1

    C.  -1

    D.  null

    

    3為了從文本文件中逐行讀取內容,應該使用哪個處理流對象?

    A. BufferedReader

    B. BufferedWriter

    C. BufferedInputStream

    D. BufferedOutputStream

   

    4.為了實現自定義對象的序列化,該自定義對象必須實現哪個接口?

    A. Volatile

    B.  Serializable

    CRunnable

    D.  Transient

   

    5.以下關於File類的敘述,哪兩項正確?(選兩項)

    AFile類位於javaio包中

    B.創建一個File類的實例將導致打開指定文件進行讀寫

    cFile實例不能用於封裝目錄

    D. File實例封裝了指定文件的信息

 

    6.刪除File實例所對應文件的方法是?

    A. mkdir

    B. exists

    C. delete

    D. isHidden

 

    7.現有:

    1.  import java.util.*;

    2.  class  ScanStuff  {

    3.public  static void main (String  []  args)  {

    4.String S= "x,yy,123"

    5.Scanner sc = new Scanner (s)

    6.while  (sc.hasNext())

    7.System.out.print (sc.next()  +" ");

    8.    }

    9.  }

    結果是什么?

    A.  x yy

    B. x,yy,123

    C.  x yy 123

    D.  xyy

    E.編譯失敗

    F.運行的時候有異常拋出

   

    8.現有:

    一f對一個java .ioFile型實例的合法引用

    一fr對‘個java.io.FileReader型實例的合法引用

    一br對一個java.io.BufferedReader型實例的合法引用

    和:

    34.    String Line=null;

    35.

    36.    //insert code here

    37.    System.out.println (line);

    38.    }

 

    哪一行代碼插入到36行將循環通過一個文本文件並存文本域中每次輸出一行?

    A.  while( (line=f.read())  !=null)  {

    B.  while( (line=fr.read())  !=null)  {

    C.  while( (line=br.read())  !=null)  {

    D.  while( (line=br.readLine())  !=null)  {

    E.  while( (line=fr.readLine())  !=null)  {

    F.  while( (line=f.readLine())  !=null)  {

    

    9.現有:

    int x- reader.read()

    下面哪一項正確?

    A.閱讀器不是FileReader或者BufferedReader類型

    B.閱讀器可以是FileReader或者BufferedReader

    c.閱讀器可以是FileReader類型,但不能是BufferedReader類型

    D.閱讀器可以是BufferedReader類型,但不能是FileReader類型

 

    10.現有:

    31.    String s="write a line to a file";

    32.    wprint(s+"\n")

    哪一個是對的?

    Aw即可以是PrintWriter類型,也可以足BufferedWriter類型。

    B.w即不可以是PrintWriter類型,也不可以足BufferedWriter類型。

    C.w 可以是BufferedWriter類型,但不可以是PrintWriter類型。

    D. w以是PrintWriter類型,但不可以是BufferedWriter類型。

    

     11.現有:

    -f是一個合法的java.io.File實例的引用

    - fr是一個合法的java.io.FileReader實例的引用

    - br  是一個合法的java.io.BufferedReader實例的引用

 

    哪兩個是合法的?(選兩項)

    A.  File f2=new File (f)

    B.  FileReader fr2=new FileReader (fr)

    C.  FileReader fr2=new FileReader(f)

    D.  FileReader fr2=new FileReader(br)

    E.  BufferedReader br2  =new BufferedReader (f);

    F.  BufferedReader br2=new BufferedReader (fr);

    

    12.現有:

    -f是一個對java .ioFile實例的合法引用

    - fw足‘個對java.io.FileWriter實例的合法引用

    - bw足一個對java.io.BufferedWriter實例的合法引用

    以卜哪一項無效?

    A. PrintWriter prtWtr = new PrintWriter (f);

    B.  PrintWriter prtWtr  = new  PrintWriter( fw);

    C. PrintWriter prtWtr = new PrintWriter(bw):

    D.  BufferWriter bufWtr = new BufferedWritr(f)

    EBufferWriter  bufWtr  =  new  BufferedWriterfw);

    F. BufferWriter bufWtr = new BufferedWriter (bw):

    

    13.現有

    1.  import java.io.PrintWriter;

    2.

    3.  class  DoFormat{

    4.public  static void main (String  []  args)  {

    5.    int x=42;

    6.    int y=12345;

    7.    float Z-7 

    8.System.out.format("%4d-",  X)j

    9.    System. out.format"-%4d-",  y);

    10.    System. out.format"-%4.ld-"z)

    11.    }

    12.  }

    結果為:

    A.編譯失敗

    B.  -42-  -1234- -7.0-

    C. - 42- -1234- -7.0-

    D. - 42- -12345- -7.0-

    E.運行時異常被拋出

   

 

14.現自:

    10. class Car implements Serializable  ()

    12. class Ford extends Car  {}

  如果試圖序列化一個Ford實例,結果為:

  A.編譯失敗

  B.兩個對象被序列化

  c.—個對象被序列化

  D.運行時異常被拋出

  

  15.現有:

    1. class Pet implements Serializable  {

    2.Collar c= new Collar();

    3.  }

    4. class Collar implements Serializable  {

    5.collarPart cpl=new CollarPart ("handle");

    6.CollarPart cp2=new CollarPart ("clip");

    7.  }

    8.   

    9. class CollarPart implements Serializable()

    如果Pet實例被序列化,則多少對象將被序列化?

    a. 0

    b. 1

    c2

    D. 3

    E. 4

    F. 5

 

  參考答案

    1D

    2C

    3A

    4B

    5AC

    6C

    7B

    8D

    9B

    10D

    11C F

    12 D

    13 E

    14 C

    15  E

 

第十一章練習題(使用泛型和集合框架)

 

    1.集合API Set接口的特點是哪項?

    A.不允許重復元素,元素有順序

    B.允許重復元素,元素無順序

    C.允許重復元素,元素有順序

    D.不允許重復元素,元素無順序

 

    2.實現了Set接口的類是哪項?

    A.  ArrayList

    B.  HashTable

    C.  HashSet

    D.  Collection

 

    3.表示鍵值對概念的接口是哪項?

    A.  Set

    B.  List

    C.  Collection

    D.  Map

 

    4List接口的特點是哪項?

    A.不允許重復元素,元素無順序

    B.不允許重復元素,元素無順序

    c.允許重復元素,元素有順序

    D.允許重復元素,元素無順序

 

    5.下列哪些項是泛型的優點?  (選兩項)

    A.不用向下強制類型轉換

    B.代碼容易編寫

    c.類型安全

    D.運行速度快

 

    6.創建一個只能存放String的泛型ArrayList的語句是哪項?

    A. ArrayList<int> al=new ArrayList<int>()

    B.  ArrayList<String> al=new ArrayList<String>()

    C.  ArrayList al=new ArrayList<String>()

    D.  ArrayList<String> al =new List<String>();

 

    7.現有

    public  class  Demo{

    public  static void main (String[]  args){

    List al=new ArrayList()

    a1add("l")

    a1add("2");

    a1add("2")

    a1add("3")

    System.out.println (al)

    }

    }

    上述程序執行后的輸出是哪項?

    A.  [123]

    B.  [1,233]

    C.   [1,223]

    D.  [2,1,3,2]

 

    8.現有:

    3.  import java.util.*;

    4.    class ForInTest  {

    5.static List list=new ArrayList();

    6

    7.public static void main (String  []  args)  {

    8.list. add("a"); list. add("b");list. add( "c")

    9.    //insert code here

    10.    System.out.print (o)

    11.    }

    12.  }

    哪一行插入到第9行將導致輸出“abc"

    A.  for (Iterator o  :  list.iterator();  o.hasNext  ();  )

    B.  for (Iterator 0  :  list)

    C.  for (Object o  :  list.iterator())

    D.  for (Object o  :  list)

 

    9.現有:

    5.  import java.util.*;

    6.  class AddStuff2  {

    7.public static void main(String  []  args)  {

    8.TreeSet<String>t=new TreeSet<String>()

    9.    if (t.add("one"))

    if (t.add("two"))

    if (t.add ("three"))

    12.    add("four")

    13.    for (String s  :  t)

    14.    System.out.print (s)

    15.    }

    16.  }

    結果為:

    A. one

    B. one three two

    C. one two three

    D. one two three four

    E. four one three two

    F.編譯失敗

 

    10.哪兩個是同步的?(選兩項)

    A. java.util.TreeSet

    B. java.util.Hashtable

    C. java.util.Vector

    D. java.util.LinkedList

 

    11.現有:

    - list是一個合法的集合引用

    - getCollection()返回一個合法集合的引用

    哪兩個是合法的?(選兩項)

    A. for(Object o  ;  list)

    B. for(Object o  :  getCollection()

    C. for(Object o  :  list.iterator()

    D. for(lterator i ;  list.iterator()  ;  i.hasNext  ()  )

    E. for(lterator i=list.iterator(); i.hasNext  ();  )

 

    12. 現有如下類型:

    a - java.util.Hashtable

    b - java.util.List

    c - java.util.ArrayList

    d - java.util.SortedSet

    和定義:

    1-使用本接口,允許用戶控制集合中每個元素的插入位置。

    2-使用本集合,確保用戶可以按照遞增或元素的自然順序遍歷集合。

    3-本具體類型允許空元素及基於索引的訪問。

    4-本集合是同步的。

    哪一組匹配是對的?

    A2描述d;  3描述b

    B.1描述b;  3描述C

    C.3描述a;  4描述b

    D.4描述a;  2描述C

 

    13.現有:

    1.  import java.util.*;

    2.  class AddStuff  {

    3.public static void main (String  []  args)    {

    4.TreeSet<String>  s= new TreeSet<String>();

    5.    s.add( "one")

    6.    s.add( "two")

    7.    //insert code here

    8.for (String s2:  sorted)

    9.System.out.print (s2+" ");

    1 0.    }

    11.  }

    和四個代碼片段:

s1.sortedSet  sorted=s.tailSet(s.first())

s2.sortedSet<String>  sorted=s.tailSet(s.first());

s3.sortedSet  sorted=  (SortedSet)s .tailSet(s.first());

s4.SortedSet  sorted=  (SortSet<String>)s .tailSet(s.first());

 

    分別插入到第7行,哪項可以編譯?

    As2

    B. sl

    C. s2s3

    D. s2s4

    E. s2, s3s4

    F. sl. s2. s3s4

 

    14.現有:

    1.  import java.util.*;

    2. class ForInTest  {

    3.static List list - new ArrayList():

    4

    5.static List getList()    {  return list;    }

    6

    7.public static void main (Strincj[]  args)    {

    8.list.add("a");  list.add("b");  list.add("c");

    9.    //insert code here

    10.    System.out.print (o);

    11.    }

    12.  }

    第9行插入哪一項將輸出abc?

    A. for(char o: list)

    B. for (Object o:  o.getList())

    C. for(Object o: getList();)

    D. for(Object o: getList())

    E. for(Object o: o.getList();)

 

    15.現有:

    1. import java.util.*;

    2

    3. Class FindStuff  {

    4.public static void main (String[]args)    {

    5,    //insert code here

    6.    c.put ("X", 123)

    7.    }

    8.  }

 

    分別插入到第5行,哪三行允許代碼編譯?(選三項)

    A. Map c= new SortedMap();

    B. HashMap c= new HashMap();

    C. HashMap c= new Hashtalole();

    D. SortedMap c= new TreeMap();

    E. ArrayList c= new ArrayList();

    F.  MaD c = new LinkedHashMap();

 

參考答案

    1D

    2C

    3D

    4C

    5AC

    6B

    7C

    8D

    9E

    10 B C

    11 B E

    12 B

    13 A

    14 D

    15 B D F

 

第十二章練習題(基於Swing的圖形用戶界面設計)

 

    1.下列有關Swing的敘述,哪項錯誤?

    ASwingJava基礎類(JFC)的組成部分

    BSwing是可用來構建GUI的程序包

    CSwingAWT圖形T具包的替代技術

    DJava基礎類(JFC)Swing的組成部分

 

    2Swing GUI通常由哪幾類元素組成?(選三項)

    A. GUI容器

    BGUI組件

    C.布局管理器

    DGUI事件偵聽器

 

    3.以下關於Swing容器敘述,哪項錯誤?

    A.容器是一種特殊的組件,它可用來放置其它組件

    B.容器是組成GUI所必需的元素

    c.容器是一種特殊的組件,它可被放置在其它容器中

    D.容器是一種特殊的組件,它可被放置在任何組件中

 

    4.以下關於BorderLayout類功能的描述,哪項錯誤?

    A.它可以與其它布局管理器協同工作

    B.它可以對GUI容器中的組件完成邊框式的布局

    C.它位於java.awt包中

    D.它是一種特殊的組件

 

    5JTextField類提供的GUI功能是?

    A.文本區域

    B.按鈕

    C.文本字段

    D.菜單

 

    6.將GUI窗口划分為東、西、南、北、中五個部分的布局管理器是:

    A.  FlowLayout

    B.  GridLayout

    C. CardLayout

    D. BorderLayout

 

    7Swing GUI編程中,setDefaultCloseOperation(JFrameEXIT_ON_

    CLOSE)語句的作用是:

    A.當執行關閉窗口操作時,不做任何操作。

    B.當執行關閉窗口操作時,調用WindowsListener對象並將隱藏JFrame

    C.當執行關閉窗口操作時,退出應用程序

    D.當執行關閉窗口操作時,調用WincowsListener對象並隱藏和銷毀

    Jframe

 

    8.下列哪些是Swing容器的頂層容器?(選兩項)

    A. JPanel

    B. JScrollPane

    C. JWindow

    D.  JFrame

  

    9.界面設計中我們希望實現一個對話框,該對話框上有5個垂直方向排列的大小

    一致的按鈕,這些按鈕要充滿對話框的空余空間,並且當對話框改變大小的時候

    按鈕也要跟着改變大小,同時保證大小一致。那么對話框應該選擇哪種布局方式?

    AFlowLayout

    B. BorderLayout

    CGridLayout

    D. null (no LayoutManager)

 

    10. 組件的setSize()方法簽名正確的是哪項?(選兩項)

    A. setSize(int width,int height)

    B. setSize(int x,int y,int width,int height)

    C. setSize(Dimension dim)

    D.以上皆不是

 

    11. Applet的布局設置默認是FlowLayout,F列哪項代碼可以改變Applet的布局方式?

    A.  setLayoutManager(new GridLayout());

    B.  setLayout (new GridLayout(2,2));

    C.  setGridLayout (2,2);

    D.  setBorderLayout()

 

    12.組件的getBounds()方法返回值的類型是哪項?

    A. Dimension

    B. Rectangle

    C. Point

    D. int[]

 

   13.假設有一個面板PanelOne,它的布局管理方式是BorderLayt。它的背景顏色被顯式地設為黑色而前景顏色被顯式地設為白色。有另一個面板PanelTwo,它的布局管理方式是FlowLayout,被添加到PanelOnecenter區域,PanelTwo的前景顏色是紅色,沒有背景顏色被指定。一個帶有文字的Label被添加到PanelTwo上,Label沒有設置顏色,下列敘述正確的是哪項?(選兩項)

   A. Label的文字是白色

   B. Label的文字是紅色

   C. PanelTwo的布局管理器覆蓋PanelOne的布局管理器

   D. PanelTwo是黑色背景

 

    14.現有:

    package mypack;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    public class Butt extends  JFrame  {

    public static v.id main(string[]  args)  {

    //  TODO Auto-generated method stub

    Butt butt=new Butt()

    }

    Butt(){

    JButton  jbl=new JButton("Hello");

    JButton jb2=new JButton("World");

    add(jbl)

    add(jb2)

    setSize(300300)

    setVisibletrue);

    }

   }

 

    下列關於代碼運行效果的敘述正確的是哪項?

    A.2個按鈕緊靠着排列,HelloWorld的左側

    B. Hello占據Frame的整個區域

    C. World占據Frame的整個區域

    D2個按鈕都在Frame的頂部

 

    15.現有:

    package mypack;

    import java.awt.Color;

    import java.awt.FlowLayout;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JPanel;

    public class ButtList extends JFrame  {

    public static void main(String[] args)  {

    ButtList bl  =new ButtList();

    }

    ButtList(){

    JPanel pl=new JPanel();

    pl.setBackground (Color.pink);

    p1.add(new JButton("one"));

    p1.add(new JButton("Two"));

    p1.add(new JButton("Three"));

    add("South"p1)

    setLayout(new Fl.wLayout());

    setSize(200,200)

    setVisible(true)

    }

    }

    上述代碼運行后的顯示效果是哪項?

    A3個按鈕從左到右排列在Frame的底部

    B3個按鈕從左到右排列在Frame的頂部

    C.按鈕無法顯示

    D.只有按鈕Three顯示出來並占據Frame整個區域

 

      參考答案

      1D

      2 A B C

      3D

      4D

      5C

      6D

      7C

      8CD

      9C

      10 A C

      11  B

      12 B

      13 B D

      14 C

      15 B

 

第十三章練習題(Java事件驅動編程)

 

    1.以下關於GUI事件處理模型的敘述,哪兩項是錯誤的(選兩項)?

    AGUI事件處理模型是委托式模型,其委托對象是事件處理器。

    B.用戶與GUI的交互需要通過事件機制來完成。

    CGUI事件處理模型是層次模型,因此一個事件可被多個組件處理。

    D.—個事件源只能注冊一個事件偵聽器。

 

    2GUI事件模型的組成元素包括(選三項):

    A.事件

    B.事件處理器

    C. GUI容器

    D.事件源

 

    3.以下各項哪些不能成為GUI事件源?

    A. GUI按鈕

    B. GU1窗口,例如JFrame

    C.鼠標

    D.文本字段

 

    4編寫JButton組件的事件處理器類時,需實現哪個接口?

    A.  ItemListener

    B. ActionListener

    C.  ButtonListener

    D.  WindowListener

 

    5.以下哪些接口是事件偵聽器接口?(選二項)

    A.ActionListener

    B. ItemListener

    CWindowListener

    DButtonListener

 

    6.事件適配器類的作用是:  (選三項)

    A.為編寫事件偵聽器程序提供簡便手段

    B.創建一種全新的事件偵聽機制

    C.是由相應的事件偵聽器接口繼承而來

    D.定義在java.awt.event

 

    7.以下哪個方法不是鼠標事件偵聽器接口(MouseListener)定義的?

    A.  mousePressed

    B.  mouseEntered

    C. mouseDragged

    D. mouseClicked

 

    8.下列敘述正確的是哪項?(選兩項)

    A.  MouseListener接口定義了處理鼠標點擊事件的方法

    BMouseMotionListener接口定義了處理鼠標點擊事件的方法

    CMouseClickListener接口定義了處理鼠標點擊事什的方法

    D.  ActionListener接口定義了處理按鈕點擊事件的方法

 

    9.下列哪個組件會產生Action事件?

    A. Buttons

    B.  Labels

    C.  Check Boxes

    DWindows

 

    10.下列敘述正確的是哪項?(選三項)

    A. TextField能產生ActionEvent事件

    B. TextArea能產乍ActionEvent事件

    CButton能產牛ActionEvent事件

    D. Menultem能產生ActionEvent事件

 

    11.假如我們想要對象eh來處理TextArea對象tTextEvent事件,那么

’  我們應如何把eh添加為t的事件處理程序?

    A.  t.addTextListener (eh)

    B.  eh.addTextListener (t)

    C.  addTextListener (eh,t)

    D.  addTextListener (t, eh)

 

    12.處理一個對象事件的首選方式是哪項?

    A.覆蓋對象的handleEvent()方法

    B.添加一個或多個事件監聽來處理事件

    C.覆蓋對象的processEvent()方法

    D.覆蓋對象的dispatchEvent()方法

 

    13.當2個或多個對象被添加作為同一個事件的監聽器,那么當事件觸發的時候

    哪個監聽器對象被首先調用?

    A.第一個被添加的監聽器對象

    B.最后一個被添加的監聽器對象

    c.無法確定哪個監聽器對象被首先調用

    D.為同一個事件添加多個監聽器是無法做到的

 

    14.下列敘述正確的是哪項?

    A.事件繼承模型取代事件委托模型

    B.事件繼承模型比事件委托模型更加高效

    c.事件委托模型使用事件監聽器來定義事件處理類的方法

    D.事件委托模型使用handleEvent()方法來支持事件處理

 

    15在事件委托類的繼承體系中,最高層次的類是哪項?

    A. java.util.EventListener

    B. java.util.EventObject

    C. java.awt.AWTEvent

    D. java.awt.event.AWTEvent

 

參考答案 

 1CD

 2ABD

 3D

 4B

 SABC

 6ACD

 7C

 8AD

 9A

 10 A C D

 11 A

 12 B

 13 C

 14 C

 15 B


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM