Java筆試題庫之選題題篇【1-70題】


1.下面中哪兩個可以在A的子類中使用:( )

  class A {

    protected int method1 (int a, int b) {

      return 0;

    }

  }

A. public int method 1 (int a, int b) { return 0; }

B. private int method1 (int a, int b) { return 0; }

C. private int method1 (int a, long b) { return 0; }

D. public short method1 (int a, int b) { return 0; }

解答:AC

A,符合子類重寫父類方法的規則

B,子類重寫父類的方法,訪問權限不能降低

C,屬於重載

D,子類重寫父類的方法 返回值類型要相同或是父類方法返回值類型的子類

2.抽象方法可以被static修飾嘛?

A True

B False

解答:B

抽象方法可以在子類中被重寫,但是靜態方法不能在子類中被重寫,靜態方法和靜態屬性與對象是無關的,只與類有關,這與abstract是矛盾的,所以abstract是不能被修飾為static,否則就失去了abstract的意義了

3.以下程序的執行結果是什么?

  class Base{

    void test() {

      System.out.println(“Base.test()”);

    }

  }

  public class Child extends Base {

    void test() {

      System.out.println(“Child.test()”);

    }

    public static void main(String[] a) {

      Child anObj = new Child();

      Base baseObj = (Base)anObj;

      baseObj.test();

    }

  }

A Child.test() Base.test()

B Base.test() Child.test()

C Base.test()

D Child.test()

解答:D

測試代碼相當於:Base baseObj = new Child();父類的引用指向子類的實例,子類又重寫了父類的test方法,因此調用子類的test方法。

4.以下程序的執行結果是什么

  class Base{

    static void test() {

      System.out.println(“Base.test()”);

    }

  }

  public class Child extends Base {

    void test() {

      System.out.println(“Child.test()”);

      Base.test(); //Call the parent method

    }

    static public void main(String[] a) {

      new Child().test();

    }

  }

A Child.test() Base.test()

B Child.test() Child.test()

C 編譯報錯. 

D 運行報錯. 

解答:C

靜態方法不能在子類中被重寫

5.以下程序的執行結果是什么

  public class Base{

    private void test() {

      System.out.println(6 + 6 + “(Result)”+6+6);

    }

    static public void main(String[] a) {

      new Base().test();

    }

  }

A 66(Result)66

B 12(Result)12

C 66(Result)12

D 12(Result)66

解答:D

字符串與基本數據類型鏈接的問題,如果第一個是字符串那么后續就都按字符串處理,比如上邊例子要是System.out.println(“(Result)”+6 + 6 );那么結果就是(Result)66,如果第一個和第二個。。。第n個都是基本數據第n+1是字符串類型,那么前n個都按加法計算出結果在與字符串連接

6.以下程序的執行結果是什么;’ ?’ 是空格的意思.

  public class Base{

    private void test() {

      String aStr = “?One?”;

      String bStr = aStr;

      aStr.toUpperCase();

      aStr.trim();

      System.out.println(“[" + aStr + "," + bStr + "]“);

    }

    static public void main(String[] a) {

      new Base().test();

    }

  }

A [ONE,?One?]

B [?One?,One]

C [ONE,One]

D [ONE,ONE]

E [?One?,?One?]

解答:E

通過String bStr = aStr;這句代碼使bStr和aStr指向同一個地址空間,所以最后aStr和bStr的結果應該是一樣,並且aStr在調用了方法之后,並沒有將結果重洗賦值給aStr(即aStr=aStr.toUpperCase();)所以aStr調用了方法之后其原本的值並沒有被改變

7.下面關於變量及其范圍的陳述哪些是不正確的( ):

A.實例變量是類的成員變量

B.實例變量用關鍵字static聲明

C.在方法中定義的局部變量在該方法被執行時創建

D.局部變量在使用前必須被初始化

解答:BC

由static修飾的變量稱為類變量或是靜態變量;方法加載的時候創建局部變量

8.下列關於修飾符混用的說法,錯誤的是( ):

A.abstract不能與final並列修飾同一個類

B.abstract類中可以有private的成員

C.abstract方法必須在abstract類中

D.static方法中能處理非static的屬性

解答 D

:靜態方法中不能引用非靜態的成員

9.執行完以下代碼int[ ]  x = new int[25];后,以下哪項說明是正確的( ):

A、 x[24]為0

B、 x[24]未定義

C、 x[25]為0

D、 x[0]為空

解答:A

x屬於引用類型的int數組,數組定義以后,該引用類型的每一個成員是int類型,默認值都為:0;並且數組是以0為索引開始算,雖然其長度為25,但其最大下標只有25-1

10.編譯運行以下程序后,關於輸出結果的說明正確的是 ( ):

  public class Conditional{

    public static void main(String args[ ]){

    int x=4;

    System.out.println(“value is “+ ((x>4) ? 99.9 :9));

    }

  }

A、 輸出結果為:value is 99.99

B、 輸出結果為:value is 9

C、 輸出結果為:value is 9.0

D、 編譯錯誤

解答:C

三目運算符中:第二個表達式和第三個表達式中如果都為基本數據類型,整個表達式的運算結果由容量高的決定。99.9是double類型 而9是int類型,double容量高。

11.關於以下application的說明,正確的是( ):

1.  class StaticStuff{

2.    static int x=10;

3.    static { x+=5;}

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

5.      System.out.println(“x=” + x);

6.    }

7.    static { x/=3;}

8. }

A、 3行與7行不能通過編譯,因為缺少方法名和返回類型

B、 7行不能通過編譯,因為只能有一個靜態初始化器

C、 編譯通過,執行結果為:x=5

D、編譯通過,執行結果為:x=3

解答:C

靜態代碼塊是類加載的時候就會被執行到的,靜態代碼塊的執行順序是按照在類中出現的先后順序執行。

12.關於以下程序代碼的說明正確的是( ):

1.  class HasStatic{

2.     private static int x=100;

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

4.       HasStatic hs1=new HasStatic( );

5.       hs1.x++;

6.       HasStatic hs2=new HasStatic( );

7.       hs2.x++;

8.       hs1=new HasStatic( );

9.       hs1.x++;

10.       HasStatic.x - -;

11.       System.out.println(“x=”+x);

12.     }

13.  }

A、5行不能通過編譯,因為引用了私有靜態變量

B、10行不能通過編譯,因為x是私有靜態變量

C、程序通過編譯,輸出結果為:x=101

D、程序通過編譯,輸出結果為:x=102

E、程序通過編譯,輸出結果為:x=103

解答:D

靜態變量是所有對象所共享的,所以上述代碼中的幾個對象操作是同一靜態變量x, 靜態變量可以通過類名調用。

13.下列說法正確的有()

A. class中的constructor不可省略

B. constructor必須與class同名,但方法不能與class同名

C. constructor在一個對象被new時執行

D.一個class只能定義一個constructor

解答:C

構造方法的作用是在實例化對象的時候給數據成員進行初始化

A.類中如果沒有顯示的給出構造方法,系統會提供一個無參構造方法

B.構造方法與類同名,類中可以有和類名相同的方法

D.構造方法可以重載

14.下列哪種說法是正確的()

A.實例方法可直接調用超類的實例方法

B.實例方法可直接調用超類的類方法

C.實例方法可直接調用其他類的實例方法

D.實例方法可直接調用本類的類方法

解答:D

A. 實例方法不可直接調用超類的私有實例方法

B. 實例方法不可直接調用超類的私有的類方法

C.要看訪問權限

15.下列哪一種敘述是正確的( )

A. abstract修飾符可修飾字段、方法和類

B. 抽象方法的body(方法實體)部分必須用一對大括號{ }包住

C. 聲明抽象方法,大括號可有可無

D. 聲明抽象方法不可寫出大括號

解答:D

abstract可以修飾方法和類,不能修飾屬性。抽象方法沒有方法體,即沒有大括號{}

16.下面代碼的執行結果是?

  import java.util.*;

  public class ShortSet{

    public static void main(String args[]){

      Set<Short> s=new HashSet<Short>();

      for(Short i=0;i<100;i++){

        s.add(i);

        s.remove(i-1);

      }

      System.out.println(s.size());

    }

  }

A.1

B.100

C.Throws Exception

D.None of the Above

解答:B

i是Short類型, i-1是int類型,其包裝類為Integer,所以s.remove(i-1)不能移除Set集合中Short類型對象;只有將(i-1)強轉為Short類型的時候,才能移除Set集合中的對象

17.鏈表具有的特點是:

A、不必事先估計存儲空間

B、可隨機訪問任一元素

C、插入刪除不需要移動元素

D、所需空間與線性表長度成正比

解答:ACD

A.采用動態存儲分配,不會造成內存浪費和溢出。

B. 不能隨機訪問,查找時要從頭指針開始遍歷

C. 插入、刪除時,只要找到對應前驅結點,修改指針即可,無需移動元素

D. 需要用額外空間存儲線性表的關系,存儲密度小

18.Java語言中,String類的IndexOf()方法返回的類型是?

A、Int16 B、Integer C、int D、long

解答:C

indexOf方法的聲明為:public int indexOf(int ch)在此對象表示的字符序列中第一次出現該字符的索引;如果未出現該字符,則返回 -1。

19.以下關於面向對象概念的描述中,不正確的一項是()。

A.在現實生活中,對象是指客觀世界的實體

B.程序中的對象就是現實生活中的對象

C.在程序中,對象是通過一種抽象數據類型來描述的,這種抽象數據類型稱為類(class)

D.在程序中,對象是一組變量和相關方法的集合

解答:B

面向過程強調的是每一個功能的具體實現步驟,面向對象強調的是對象調用功能

20..執行下列代碼后,哪個結論是正確的

  String[] s=new String[10];

A. s[9] 為 null;

B. s[10] 為 “”;

C. s[0] 為 未定義

D. s.length 為10

解答:AD

s是引用類型,s中的每一個成員都是引用類型,即String類型,String類型默認的值為null

21.屬性的可見性有。(不定項選擇)

A.公有的

B.私有的

C.私有保護的

D.保護的

E.默認的

解答:ABDE

屬性的可見性有四種:公有的(public) 保護的(protected) 默認的 私有的(private)

22..在字符串前面加上_____符號,則字符串中的轉義字符將不被處理。

A @

B \

C #

D %

解答:B

在java中“\”表示轉譯符,改變了后面字符的本來意思;\r:回車;\n:換行(new line);\t:相當於tab鍵(叫制表符太生澀);\\:表示\;\':表示';\":表示"

23.下列代碼哪行會出錯: 

1)   public void modify() {

2)     int I, j, k;

3)     I = 100;

4)     while ( I > 0 ) {

5)       j = I * 2;

6)       System.out.println (” The value of j is ” + j );

7)       k = k + 1;

8)       I - -;

9)     }

10)   }

A. 4

B. 6

C. 7

D. 8

解答:C

k沒有初始化就使用了

24.對記錄序列{314,298,508,123,486,145}按從小到大的順序進行插入排序,經過兩趟排序后的結果為:

A {314,298,508,123,145,486}

B {298,314,508,123,486,145}

C {298,123,314,508,486,145}

D {123、298,314,508,486,145}

解答:B

插入排序算法:()

  public static void injectionSort(int[] number) {

  // 第一個元素作為一部分,對后面的部分進行循環

  for (int j = 1; j < number.length; j++) {

    int tmp = number[ j ];

    int i = j – 1;

    while (tmp < number[ i ]) {

      number[i + 1] = number[ i ];

      i - -;

      if (i == -1)

        break;

    }

    number[i + 1] = tmp;

  }

  }

25.棧是一種。

A 存取受限的線性結構

B 存取不受限的線性結構

C 存取受限的非線性結構

D 存取不受限的非線性結構

解答:A

棧(stack)在計算機科學中是限定僅在表尾進行插入或刪除操作的線性表。

26.下列哪些語句關於內存回收的說明是正確的。

A 程序員必須創建一個線程來釋放內存

B 內存回收程序負責釋放無用內存

C 內存回收程序允許程序員直接釋放內存

D 內存回收程序可以在指定的時間釋放內存對象

解答:B

垃圾收集器在一個Java程序中的執行是自動的,不能強制執行,即使程序員能明確地判斷出有一塊內存已經無用了,是應該回收的,程序員也不能強制垃圾收集器回收該內存塊。程序員唯一能做的就是通過調用System. gc 方法來”建議”執行垃圾收集器,但其是否可以執行,什么時候執行卻都是不可知的。

27.要實現java.long.Runnable接口,必須實現下列哪個方法?

A. void run()

B. public void run()

C. public void start()

D. void run(int priority)

E. public void run(int priority)

F. public void start(int priority)

解答:B

實現Runnable接口,接口中有一個抽象方法run,實現類中實現該方法。

28 下列程序的結果是什么?

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

2    Object obj = new Object() {

3      public int hashCode() {

4        return 42;

5      }

6    };

7    System.out.println(obj.hashCode());

8  }

A. 42

B.在運行時拋出異常

C. 編譯失敗,原因是第2行出現錯誤

D. 編譯失敗,原因是第3出現錯誤

E. 編譯失敗,原因是第7行出現錯誤.

解答:A

匿名內部類重寫了hashCode方法。

29 java中的兩個保留字是什么

A. const

B. import

C. doto

D. implements

解答:AC

const用於修改字段或局部變量的聲明。它指定字段或局部變量的值是常數,不能被修改

goto指定跳轉到標簽,找到標簽后,程序將處理從下一行開始的命令

30. 在一個類中重寫了hashCode和equals兩個方法,那么對於同一個類的兩個實例,下列說法正確的是?

A. 如果hashCode值相同,equsal不同,則這兩個對象相同

B. 如果hashCode值相同,equals相同,則這兩個對象相同

C. 如果hashCode不同,equals相同,則這兩個對象相同

D. 如果hashCode值相同,則這兩個對象有可能相同

解答:BD

先通過 hashcode來判斷某個對象是否存放某個桶里,但這個桶里可能有很多對象,那么我們就需要再通過 equals 來在這個桶里找到我們要的對象。

31. java中char的取值范圍是多少?

A. 0 ~32767

B. 0 ~65535

C. –65535~65535

D. –128 ~127

解答:B

在Java中,char是一個無符號16位類型,取值范圍為0到65535。

32. 下列程序運行結果是什么?

  public class Test {

    private static float[] f = new float[2];

    public static void main(String args[]) {

      System.out.println(“f[0] = “ + f[0]);

    }

  }

A. f[0] = 0

B. f[0] = 0.0

C. 編譯時報錯

D. 運行時報錯

解答:B

f屬於引用類型的float數組,數組定義以后,該引用類型的每一個成員是float類型,默認值都為:0.0

33. 下列程序的運行結果是什么?

  public class Test {

    public static void main(String[] args) {

      String str = NULL;

      System.out.println(str);

    }

  }

A. NULL

B. 編譯時報錯

C. ""

D.運行時報錯

解答:B

null應該小寫

34、下列程序執行結果是什么?

  public class Text{

    public static void main(String[] args){

      int a=10,b=4,c=20,d=6;

      System.out.println(a++*b+c*--d);

    }

  }

A、144

B、164

C、140

D、160

解答:C

在java中執行加減乘除基本運算時,已就遵循先乘除后加減的原則,而++a與a++的區別在於,++a是先自增后在參與運算,a++是先參與運算之后在自增,所以最終答案是10*4+20*5=140

35、下列哪兩個選項不能直接導致線程停止?

A. 跳出同步代碼塊

B. 調用wait方法

 C. 調用notify方法

 D. 調用讀取流的方法

 E. 設置線程的優先權

 解答:AC

stop方法.這個方法將終止所有未結束的方法,包括run方法。當一個線程停止時候,他會立即釋放 所有他鎖住對象上的鎖。這會導致對象處於不一致的狀態。 當線程想終止另一個線程的時候,它無法知道何時調用stop是安全的,何時會導致對象被破壞。所以這個方法被棄用了。你應該中斷一個線程而不是停止他。被中斷的線程會在安全的時候停止。

A、如果一個線程想進入一個已經被另外一個線程占用得同步代碼塊,這個線程會停止,但是這里說的是跳出

B、他能使當前線程停止,等待別人調用notify方法

C、放另外一個調用了wait方法得線程繼續執行,自己也可以繼續執行

D、這是典型的阻塞方法,線程等待知道確實有東西可讀得時候才會去讀

E、因為優先級改變了,JVM要重新選擇優先級高得先執行,所以會短暫停止

36、 關於默認構造函數的創建,下列說法那些正確

A. 默認構造函數可以初始化方法變量

B. 構造方法默認調用超類的無參構造方法

C. 默認構造方法會去初始化成員變量

D. 如果沒有無參構造函數,但有其他構造函數,程序會自動創建默認的構造函數

E. 只有在該類沒有其他構造函數的時候,程序才會自動創建默認的構造函數

解答:BCE

構造方法的作用是實例化對象的時候給數據成員初始化,如果類中沒有顯示的提供構造方法,系統會提供默認的無參構造方法,如果有了其它構造方法,默認的構造方法不再提供。

37、 在下列程序中聲明一個內部內,以下選擇中,哪些最合適?

  public class OuterClass {

    private double d1 = 1.0;

    //在這里聲明

  }

A. static class InnerOne { public double methoda() {return d1;} }

B. static class InnerOne { static double methoda() {return d1;} }

C. private class InnerOne { public double methoda() {return d1;} }

D. protected class InnerOne { static double methoda() {return d1;} }

E. public abstract class InnerOne { public abstract double methoda(); }

解答:CE

AB.內部類可以聲明為static的,但此時就不能再使用外層封裝類的非static的成員變量;

D.非static的內部類中的成員不能聲明為static的,只有在頂層類或static的內部類中才可聲明static成員

38、 下列方法中,哪些方法在子類中不能重寫? 

A. final void methoda() {}

B. void methoda() {}

C. static void methoda() {}

D. static final void methoda() {}

解答:ACD

final修飾方法,在子類中不能被重寫。被static修飾的方法在子父類中不算是重寫,其底層是把父類的同名方法隱藏了

39、下列程序的運行結果是什么:

  public class Test {

    public static void main (String args[]) {

      class Foo {

        public int i = 3;

      }

      Object o = (Object) new Foo();

      Foo foo = (Foo)o;

      System.out.println(foo.i);

    }

  }

A. 編譯失敗

B. 編譯成功,並且會輸出打印“3”

C. 編譯成功,但會在第6行拋出ClassCastException異常

D. 編譯成功,但會在第7行拋出ClassCastException異常

解答:B

局部內部類的使用

40、 下列程序的運行結果是什么:

  public class Test {

    public static void main (String [] args) {

      String foo = “blue”;

      String bar = foo;

      foo = “green”;

      System.out.println(bar);

    }

  }

A. 運行時異常

B. 編譯時異常

C. 輸出結果為“null”

D. 輸出結果為 “blue”

E. 輸出結果為 “green”

解答:D

采用String foo = “blue”定義方式定義的字符串放在字符串池中,通過String bar = foo;他們指向了同一地址空間,就是同一個池子,當執行foo = “green”; foo指向新的地址空間。

41、下面哪個選項中整型變量foo的值最接近但是不大於double型變量bar的值?

A. int foo = (int) Math.max(bar);

B. int foo = (int) Math.min(bar);

C. int foo = (int) Math.abs(bar);

D. int foo = (int) Math.ceil(bar);

E. int foo = (int) Math.floor(bar);

F. int foo = (int) Math.round(bar);

解答:E

max方法是取最大值

min方法是取最小值

abs方法是取bar的絕對值,

ceil方法返回最小的(最接近負無窮大)double 值,該值大於等於參數,並等於某個整數。

floor方法返回最大的(最接近正無窮大)double 值,該值小於等於參數,並等於某個整數。

round方法 返回最接近參數的 long。

42、 下列程序的運行結果是什么:

1.    package foo;

2.    import java.util.Vector;

3.    private class MyVector extends Vector {

4.      int i = 1;

5.      public MyVector() {

6.        i = 2;

7.       }

8.    }

9.    public class MyNewVector extends MyVector {

10.    public MyNewVector () {

11.      i = 4;

12.    }

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

14.      MyVector v = new MyNewVector();

15.     }

16.  }

A. 編譯成果

B. 在第3行編譯失敗

C. 在第6行編譯失敗

D. 在第9行編譯失敗

E. 在第14行編譯失敗

解答:B

類MyVector不能是私有的

43、下列程序執行結果是什么?

  public class Text{

    public static void main(String[] args){
      int i=12;

      System.out.println(i+=i-=i*=i);

    }

  }

A、程序無法編譯

B、100

C、0

D、-120

解答:D

在java中執行加減乘除基本運算時,已就遵循先乘除后加減的原則,而i+=i相當於i=i+i;

本題我們先將i+=i-+i*=i編號 => i1+=i2-=i3*=i4;在計算之前先明白i1=i2=i3=i4=i=12;先計算i3=i*i=144,;再計算i1+=i2即為i1=i1+i2=24,此時i1=i2=24;最后計算i2-=i3即為i2=i2-i3=-120;

44、 下列選項中,哪些選項與第2行相等:

1.   public interface Foo{

2.     int k = 4;

3.   }

A. final int k = 4;

B. Public int k = 4;

C. static int k = 4;

D. Private int k = 4;

E. Abstract int k = 4;

F. Volatile int k = 4;

G. Transient int k = 4;

H. protected int k = 4;

解答:AB

static:修飾的靜態變量

final 修飾的是常量

abstract不能修飾變量

Volatile修飾的成員變量在每次被線程訪問時,都強迫從共享內存中重讀該成員變量的值。而且,當成員變量發生變化時,強迫線程將變化值回寫到共享內存。這樣在任何時刻,兩個不同的線程總是看到某個成員變量的同一個值。

Transient:對不需序列化的類的域使用transient關鍵字,以減少序列化的數據量。

int k=4相當於public static final int k=4; 在接口中可以不寫static final

45、 下列代碼的執行結果是什么:

  public class foo {

    static String s;

    public static void main (String[]args) {

    System.out.println (“s=” + s);

    }

  }

A. 代碼編譯成功並輸出“s=”

B. 代碼編譯成功並輸出“s=null”

C. 因為變量s沒有初始化,所以代碼編譯失敗

D. 代碼編譯成功,但在調用toString的時候拋出NullPointerException異常

解答:B

String為引用數據類型,引用類型數據成員的默認值為null

46、下列創建數組實例正確的是? 

A. int[] ia = new int [15];

B. float fa = new float [20];

C. char[] ca = “Some String”;

D. Object oa = new float[20];

E. Int ia [][] = (4, 5, 6) (1, 2, 3)

解答:AD

任何類的父類都是Object,數組也數據引用類型,Object oa = new float[20];這種寫法相當於父類的用指向之類的實例。

47、下列代碼中,在第四行 /X/ 可以插入那些選項進行編譯?

  public class ExceptionTest {

    class TestException extends Exception {}

      public void runTest () throws TestException {}

      public void test () /X/ {

      runTest ();

    }

  }

A. throws Exception

B. Catch (Exception e).

C. Throws RuntimeException.

D. Catch (TestException e).

E. No code is necessary.

解答:A

方法上使用throws拋出異常,Exception是異常類的超類。

48、下列代碼的執行結果是什么:

  public class SwitchTest {

    public static void main (String []args) {

      System.out.println (“value =” +switchIt(4));

    }

    public static int switchIt(int x) {

      int j = 1;

      switch (x) {

        case 1:j++;

        case 2: j++;

        case 3: j++;

        case 4: j++;

        case 5: j++;

        default:j++;

      }

      return j + x;

    }

  }

A. Value =3

B. Value =4

C. Value =5

D. Value =6

E. Value =7

F. Value =8

解答:F

由於case塊沒有break語句,那么從case 4:向下的代碼都會執行。

49、下列選項中,那些是可以被throw拋出的?

A. Error

B. Event

C. Object

D. Exception

E. Throwable

F. RuntimeException

解答:ADEF

能夠拋出的對象類型要是Throwable 或是Throwable的子類

50.在下面程序的第6行補充上下列哪個方法,會導致在編譯過程中發生錯誤?

1)    class Super{

2)      public float getNum(){

3)        return 3.0f;

4)      }

     }

5)    pubhc class Sub extends Super{

6)

7)    }

A,public float getNum(){retun 4.0f;}

B.public void getNum(){}

C.public void getNum(double d){}

D.public double getNum(float d){ retun 4.0f ;}

解答:B

方法重寫的問題。子類中有和父類的方法名相同,但是參數不同,不會出編譯錯誤,認為是子類的特有的方法,但是如果子類中方法和父類的方法名,參數,訪問權限,異常都相同,只有返回值類型不同會編譯不通過。

51.下面關於import, class和package的聲明順序哪個正確?( )

A. package, import, class

B. class, import, package

C. import, package, class

D. package, class, import

解答:A

在java代碼中,一個類從第一行到結尾,一般順序是 本類地址(在哪個包下) 導了什么包 class聲明

52.下面哪個是正確的?( )

A. String temp [] = new String {“a” “b” “c”};

B. String temp [] = {“a” “b” “c”}

C. String temp = {“a”, “b”, “c”}

D. String temp [] = {“a”, “b”, “c”}

解答:D

53.關於java.lang.String類,以下描述正確的一項是( )

A. String類是final類故不可以繼承;

B. String類是final類故可以繼承;

C. String類不是final類故不可以繼承;

D. String類不是final類故可以繼承;

解答:A

String類是自讀字符串,被final修飾,在java中final修飾類的不能被繼承

54.關於實例方法和類方法,以下描述正確的是:( )

A. 實例方法只能訪問實例變量

B. 類方法既可以訪問類變量,也可以訪問實例變量

C. 類方法只能通過類名來調用

D. 實例方法只能通過對象來調用

解答:D

A  實例方法可以訪問類變量

B  類方法只能訪問類變量

C  類方法可以通過對象調用

55.接口是Java面向對象的實現機制之一,以下說法正確的是:( )

A. Java支持多繼承,一個類可以實現多個接口;

B. Java只支持單繼承,一個類可以實現多個接口;

C. Java只支持單繼承,一個類只可以實現一個接口;

D. Java支持多繼承,但一個類只可以實現一個接口。

解答:B

Java支持單重繼承,一個類只能繼承自另外的一個類,但是一個類可以實現多個接口。但是java可以多層繼承

56.下列關於interface(接口)的說法正確的是:( )

A. interface中可以有private方法

B. interface中可以有final方法

C. interface中可以有function實現

D. interface可以繼承其他interface

解答:D

A.接口中不可以有private的方法,接口不能被私有化

B.接口中不可以有final的方法 接口中的方法默認是 public abstract的

C.接口中的方法不可以有實現

57.已知A類被打包在packageA , B類被打包在packageB ,且B類被聲明為public ,且有一個成員變量x被聲明為protected控制方式 。C類也位於packageA包,且繼承了B類 。則以下說話正確的是( )

A. A類的實例不能訪問到B類的實例

B. A類的實例能夠訪問到B類一個實例的x成員

C. C類的實例可以訪問到B類一個實例的x成員

D. C類的實例不能訪問到B類的實例

解答:C

A、B包是public的,其他包能訪問到

B、B包中的成員變量X被聲明成protected的,只能本包內實例才能訪問

C D、不同包子類的關系, 可以訪問到父類B的protected成員

58.以下程序正確的輸出是( )

  package test;

  public class FatherClass {

    public FatherClass() {

      System.out.println(“FatherClass Create”);

    }

  }

  package test;

  import test.FatherClass;

  public class ChildClass extends FatherClass {

    public ChildClass() {

      System.out.println(“ChildClass Create”);

    }

    public static void main(String[] args) {

      FatherClass fc = new FatherClass();

      ChildClass cc = new ChildClass();

    }

  }

A.

FatherClass Create

FatherClass Create

ChildClass Create

B.

FatherClass Create

ChildClass Create

FatherClass Create

C.

ChildClass Create

ChildClass Create

FatherClass Create

D.

ChildClass Create

FatherClass Create

FatherClass Create

解答:A

實例化一個類的時候,就會去調用它的構造方法;在子類構造方法執行時,默認情況下第一句是super();來調用父類的構造方法

59.給定如下代碼,下面哪個可以作為該類的構造函數 ( )

  public class Test {

  }

A. public void Test() {?}

B. public Test() {?}

C. public static Test() {?}

D. public static void Test() {?}

解答:B

構造方法:與類同名沒有放回類型

60.題目:

1.   public class test (

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

3.       int i = 0xFFFFFFF1;

4.       int j = ~i;

5.

6.     }

7.   }

程序運行到第5行時,j的值為多少?( )

A. –15

B. 0

C. 1

D. 14

E. 在第三行的錯誤導致編譯失敗

解答:D

int i = 0xFFFFFFF1;相當於 int i=-15  “~”表示取反再減1;結果就為15-1=14

61.關於sleep()和wait(),以下描述錯誤的一項是( )

A. sleep是線程類(Thread)的靜態方法,wait是Object類的方法;

B. sleep不釋放對象鎖,wait放棄對象鎖;

C. sleep暫停線程、但監控狀態仍然保持,結束后會自動恢復;

D. wait后進入等待鎖定池,只有針對此對象發出notify方法后獲得對象鎖進入運行狀態。

解答:D

sleep是線程類(Thread)的靜態方法,導致此線程暫停執行指定時間,給執行機會給其他線程,但是監控狀態依然保持,到時后會自動恢復。調用sleep不會釋放對象鎖。

wait是Object類的方法,必須和synchronized關鍵字一起使用。對此對象調用wait方法導致本線程進入阻塞狀態,,只有針對此對象發出notify方法(或notifyAll)后本線程才會解除阻塞,但只有重新占用互斥鎖之后,本線程才會進入運行狀態。

62.下面能讓線程停止執行的有(多選)( )

A. sleep();

B. stop();

C. notify();

D. synchronized();

E. yield();

F. wait();

G. notifyAll();

解答:ABDEF

sleep:導致此線程暫停執行指定時間

stop: 這個方法將終止所有未結束的方法,包括run方法。

synchronized():對象鎖

yield:當前正在被服務的線程可能覺得cpu的服務質量不夠好,於是提前退出,這就是yield。

wait:當前正在被服務的線程需要睡一會,醒來后繼續被服務

63.下面哪個可以改變容器的布局?( )

A. setLayout(aLayoutManager);

B. addLayout(aLayoutManager);

C. layout(aLayoutManager);

D. setLayoutManager(aLayoutManager);

解答:A

Java設置布局管理器setLayout()

64.在使用super和this關鍵字時,以下描述正確的是()

A、super()和this()不一定要放在構造方法第一行

B、this()和super()可以同時出現在一個構造函數中

C、this()和super()可以在static環境中使用,包括static方法和static代碼塊

D、在子類構造方法中,使用super()顯示調用父類的構造方法,super()必須寫在子類構造方法的第一行,否則編譯失敗

解答:D

super()是調用父類方法,this()是調用子類方法,子類方法中,只能放在方法的第一行,並且,他們兩不能同時出現在一個構造函數中,也不能調用被static修飾的方法和代碼塊

65.提供Java存取數據庫能力的包是()

A.java.sql

B.java.awt

C.java.lang

D.java.swing

解答:A

java.sql是JDBC的編程接口

java.awt和java.swing是做圖像界面的類庫

java.lang: Java 編程語言進行程序設計的基礎類

66.不能用來修飾interface的有()

A.private

B.public

C.protected

D.static

解答:ACD

修飾接口可以是public和默認

67.下列說法錯誤的有()

A. 在類方法中可用this來調用本類的構造方法

B. 在類方法中調用本類的類方法時可直接調用

C. 在類方法中只能調用本類中的類方法

D. 在類方法中絕對不能調用實例方法

解答:ACD

A.   在類方法中,被static修飾的方法里不能用this,在其他沒有被static修飾的類中可以使用this,但不能調本類的構造方法

C.在類方法中可以調用其它類中的靜態類方法

D.在類方法中可以通過實例化對象調用實例方法

68.從下面四段(A,B,C,D)代碼中選擇出正確的代碼段()

A. abstract class Name {

    private String name;

    public abstract boolean isStupidName(String name) {}

    }

B. public class Something {

    void doSomething () {

      private String s ="";

      int l = s.length();

    }

    }

C. public class Something {

    public static void main(String[] args) {

      Other o = new Other();

      new Something().addOne(o);

    }

    public void addOne(final Other o) {

      o.i++;

    }

    }

   class Other {

    public int i;

   }

D. public class Something {

    public int addOne(final int x) {

      return ++x; }

    }

解答:C

A..抽象方法不能有方法體

B.方法中定義的是局部變量,不能用類成員變量修飾符private

D.final修飾為常量,常量的值不能被改變,所以不能作為參數變量

69.選擇下面代碼的運行結果:()。

  public class Test{

    public void method(){

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

        System.out.print(i);

      }

      System.out.print(i);

    }

  }

A.122

B.123

C.編譯錯誤

D.沒有任何輸出

解答:C

i變量的作用范圍是整個for循環,第二次輸出語句的i並沒有被定義

70.請看如下代碼

  class Person {

    private int a;

    public int change(int m){

      return m;

    }

  }

  public class Teacher extends Person{

    public int b;

    public static void main(String arg[]){

      Person p = new Person();

      Teacher t = new Teacher();

      int i;

       // point x

    }

  }

下面哪些放在// point x?行是正確的?

A, i = m;

B, i = b;

C, i = p.a;

D, i = p.change(3);

E, i = t.b;

解答:DE

A.不同的作用域

B.靜態方法中不能直接使用非靜態成員變量

C.類外不能訪問其它類私有的成員

D,E.在類方法中可以通過實例化對象調用類中的實例成員。


免責聲明!

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



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