1. 程式人生 > >Java測試題(含答案和部分解析)

Java測試題(含答案和部分解析)

一.單項選擇題

1.給出如下程式碼:

class Test{
  private int m;
  public static void fun() {
    // some code...
  }
}

如何使成員變數m 被函式fun()直接訪問(C)

A、將private int m 改為protected int m
B、將private int m 改為 public int m
C、將private int m 改為 static int m
D、將private int m 改為 int m

在靜態方法中不能直接訪問非靜態的成員。

2.Java中main()函式的返回值是什麼 (D )

A、 String
B、int
C、char
D、void

3.下面的程式碼段中,執行之後i 和j 的值是什麼? (C)

int i = 1;
int j;
j = i++;

A、1, 1
B、1, 2
C、2, 1
D、2, 2

4.下面哪個是main()函式的合法引數? ( C )

A、char args[]
B、char args[][]
C、String args[]
D、String args

5.已知表示式int m[] = {0, 1, 2, 3, 4, 5, 6 };

下面哪個表示式的值與陣列下標量總數相等?( B )

A、 m.length()
B、m.length
C、m.length()+1
D、m.length+1

這是專屬於陣列的length屬性。

6.已知如下程式碼:

public class Test
{
    long a[] = new long[10];
    public static void main ( String arg[] ) {
    System.out.println ( a[6] );
    }
}

請問哪個語句是正確的?(C )

A、Output is null.

B、Output is 0.

C、When compile, some error will occur.

D、When running, some error will occur.

在靜態方法中不能直接訪問非靜態的成員,compile:編譯。

7.已知如下程式碼:

boolean m = true;
if ( m == false )
    System.out.println("False");
else
    System.out.println("True");

執行結果是什麼?(B )

A、False

B、True

C、None

D、An error will occur when running.

8. 當瀏覽器返回到新URL的包含applet 的頁面時呼叫以下哪個函式(B)

A、 init()
B、start()
C、stop()
D、destroy()

9. 以下哪個方法用於定義執行緒的執行體?(C)

A、 start()
B、init()
C、run()
D、main()
E、synchronized()

10. 以下哪個約束符可用於定義成員常量?(B)

A、 static
B、final
C、abstract
D、No modifier can be used

static 靜態成員變數(在定義這個變數的類的例項中,這個變數是唯一的,即多個例項間這個變數為共享的)
final 成員常量(必須在定義時或在構造方法中賦初值)
final static 靜態成員常量,必須在定義這個常量時給定其初始化值

11. 如下哪個語句正確說明了native方法?(A)

A、 public native void test();
B、public native void test(){}
C、public void native test();
D、public native test(){}

12. 已知如下程式碼:

class Example{
    String str;
    public Example(){
        str= "example";
    }
    public Example(String s){
        str=s;
    }
}
class Demo extends Example{
}
public class Test{
    public void f (){
        Example ex = new Example("Good");
        Demo d = new Demo("Good");
    } 
}

哪句語句會導致錯誤?(E)

A、 line 3

B、line 6

C、line 10

D、 line 14

E、 line 15

*在Java中,如果一個類沒有定義構造方法,編譯器會預設插入一個無引數的構造方法;但是如果一個構造方法在父類中已定義,在這種情況,編譯器是不會自動插入一個預設的無參構造方法。
對於子類來說,不管是無參構造方法還是有參構造方法,都會預設呼叫父類的無參構造方法;當編譯器嘗試在子類中往這兩個構造方法插入super()方法時,因為父類沒有一個預設的無參構造方法,所以編譯器報錯;*

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

A、sleep是執行緒類(Thread)的方法,wait是Object類的方法;
B、sleep不釋放物件鎖,wait放棄物件鎖;
C、sleep暫停執行緒、但監控狀態仍然保持,結束後會自動恢復;
D、wait後進入等待鎖定池,只有針對此物件發出notify方法後獲得物件鎖進入執行狀態。

Notify後是進入物件鎖定池,準備獲得鎖,而不是立即獲得。

14. 提供Java存取資料庫能力的包是?( A)

A、java.sql
B、java.awt
C、java.lang
D、java.swing

15. 方法resume()負責恢復哪些執行緒的執行?( D )

A、通過呼叫stop()方法而停止的執行緒。
B、通過呼叫sleep()方法而停止的執行緒。
C、通過呼叫wait()方法而停止的執行緒。
D、通過呼叫suspend()方法而停止的執行緒。

17. Java I/O程式設計中,下列描述正確的是(A)

A、OutputStream用於寫操作
B、 InputStream用於寫操作
C、 I/O庫不支援對檔案可讀可寫API

18. 下述程式碼的執行結果是(E)

class Super { 
    public int getLength() {
    return 4;
    }
}
public class Sub extends Super { 
    public long getLength() {
        return 5;
    }
    public static void main (String[]args) {
        Super sooper = new Super (); 
        Super sub = new Sub();  
        System.out.printIn(sooper.getLength()+ “,” + sub.getLength() );
    }
}

A、 4, 4
B、 4, 5
C、 5, 4
D、 5, 5
E、程式碼不能被編譯

方法覆蓋要求引數簽名,方法名和返回型別一致。

19. MAX_LENGTH 是int 型public 成員變數,變數值保持為常量1,用簡短語句定義這個變數。(D)

A 、public int MAX_LENGTH=1;
B、final int MAX_LENGTH=1;
C、final public int MAX_LENGTH=1;
D、public final int MAX_LENGTH=1;

一般是public ,final ,static這個順序。

20. 類 Teacher 和 Student 是類 Person 的子類;

Teacher t;
Student s;
// t and s are all non-null.
if (t instanceof Person )
    s=(Student)t; 

最後一條語句的結果是: (D)
A、將構造一個Student 物件;
B、表示式是合法的;
C、表示式是錯誤的;
D、編譯時正確, 但執行時錯誤。

類與類不能強制轉換。

21. 欲構造ArrayList類得一個例項,此類繼承了List介面,下列哪個方法是正確的(B)

A、 ArrayList myList = new Object();
B、 List myList = new ArrayList();
C、 ArraylList myList = new List();
D、 List myList = new List();

22. Java中,如果類C是類B的子類,類B是類A的子類,那麼下面描述正確的是(A)

A、 C不僅繼承了B中的成員,同樣也繼承了A中的成員
B、 C只繼承了B中的成員
C、 C只繼承了A中的成員
D、 C不能繼承A或B中的成員

23. 分析選項中關於Java中this關鍵字的說法正確的是(A)

A、 this關鍵字是在物件內部指代自身的引用
B、 this關鍵字可以在類中的任何位置使用
C、 this關鍵字和類關聯,而不是和特定的物件關聯
D、 同一個類的不同物件共用一個this

24. 在JAVA中,LinkedList類和ArrayList類同屬於集合框架類,下列(D)選項中的方法是LinkedList類有而ArrayList類沒有的。

A、 add(Object o)
B、 add(int index,Object o)
C、 remove(Object o)
D、 removeLast()

25. 在JAVA中ArrayList類實現了可變大小的陣列,便於遍歷元素和隨機訪問元素,已知 獲得了ArrayList類的物件bookTypeList,則下列語句中能夠實現判斷列表中是否存在字串“小說”的是(C)。

A、 bookTypeList.add(“小說”);
B、 bookTypeList.get(“小說”);
C、 bookTypeList.contains(“小說”);
D、bookTypeList.remove(“小說”);

26. 在java中下列關於自動型別轉換說法正確的是(A)

A、 基本資料型別和String相加結果一定是字串型
B、 char型別和int型別相加結果一定是字元
C、 double型別可以自動轉換為int
D、 char + int + double +”” 結果一定是double

27. 物件的特徵在類中表示為變數,稱為類的(B)。

A、 物件
B、 屬性
C、 方法
D、 資料型別

28. 在Java中,關於構造方法,下列說法錯誤的是( C )

A、 構造方法的名稱必須與類名相同
B、 構造方法可以帶引數
C、 構造方法不可以過載
D、 構造方法絕對不能有返回值

29. 下面(C)不是String類提供的合法的方法。

A、 equals(String)
B、 trim()
C、 append()
D、 indexOf()

30. 在JAVA中,以下(C)類的物件以鍵-值的方式儲存物件

A、 java.util.List
B、 java.util.ArrayList
C、 java.util.HashMap
D、 java.util.LinkedList

二.多項選擇題

1. 下面哪幾個函式是public void example(){…}的過載函式(AD ),選兩項

A、 public void example( int m){…}

B、public int example(){…}

C、public void example2(){…}

D、 public int example ( int m, float f){…}

方法名一定相同,引數簽名(引數數量,型別,順序)一定不同。

2. 給出下面的程式碼段:

public class Base{
    int w, x, y ,z;
    public Base(int a,int b)
    {
    x=a; y=b;
    }

    public Base(int a, int b, int c, int d)
    {
        // assignment x=a, y=b
        w=d;
        z=c;
    }
}

在程式碼說明// assignment x=a, y=b處寫入如下哪幾個程式碼是正確的(CD),選兩項

A、 Base(a,b);

B、x=a, y=b;

C、x=a; y=b;

D、this(a,b);

在方法過載中,呼叫另一個過載的方法用this。

3. 已知如下定義:String s = “story”;

下面哪個表示式是合法的(AD),選兩項

A、 s += “books”;

B、char c = s[1];

C、int len = s.length;

D、 String t = s.toLowerCase();

String型別沒有length屬性,這個專屬於陣列。

4. 如下哪些字串是Java中的識別符號(AE),選兩項

A、 fieldname

B、super

C、3number

D、#number

E、$number

識別符號以¥$_或者字母開頭,不能用關鍵字。

5. 如下哪些是Java中有效的關鍵字(ACDE),選四項

A、 const

B、NULL

C、false

D、this

E、 native

6. 如下哪些是Java中正確的整數表示(ABC), 選三項

A、22

B、0x22

C、022

D、22H

從上到下依次十進位制,八進位制,十六進位制。

7. 下面句話是正確的(AD), 選兩項

A、 >> 是算術右移操作符.

B、>> 是邏輯右移操作符.

C、>>> 是算術右移操作符

D、>>> 是邏輯右移操作符

8. 下面哪個賦值語句是合法的(BCD),選三項

A、float a = 2.0

B、double b = 2.0

C、int c = 2

D、long d = 2

Float型別賦值的數字後面要加“f”或者“F”:float a = 2.0f;

9. 在如下原始碼檔案Test.java中, 哪個是正確的類定義(BD),選兩項

A、

public class Test {
    public int x = 0;
    public test(int x)
    {
        this.x = x;
    }
}

B、

public class Test{
    public int x=0;
    public Test(int x) {
        this.x = x;
    }
}

C、

public class Test extends T1, T2 {
    public int x = 0;
    public Test (int x) {
        this.x = x;
    }
}

D、

public class Test extends T1{
    public int x=0;
    public Test(int x){
        this.x = x;
    }
}

E、

protected class Test extends T2{
    public int x=0;
    public Test(int x){
        this.x=x;
    }
}

建構函式需與本類名稱完全相同,不能繼承兩個父類,protected不能用來修飾類。

10. 已知如下的命令執行 java MyTest a b c

請問哪個語句是正確的(CD),選兩項

A、 args[0] = “MyTest a b c”

B、args[0] = “MyTest”

C、args[0] = “a”

D、args[1]= ‘b’

11. 已知如下程式碼:

public class Test
{
    public static void main(String arg[])
    {
        int i = 5;
        do {
            System.out.println(i);
        } while (--i>5)
        System.out.println("finished");
    }
}

執行後的輸出是什麼(AD),選兩項

A、 5

B、4

C、6

D、Finished

E、None

12. 下面程式碼執行後的輸出是什麼(ABC),選三項

outer: for(int i=0;i<3; i++)
inner: for(int j=0;j<2;j++)
{
    if(j==1) continue outer;
    System.out.println(j+ "and "+i);
}

A、 0 and 0

B、0 and 1

C、0 and 2

D、1 and 0

E、1 and 1

F、1 and 2

G、2 and 0

H、 2 and 1

I、 2 and 2

易粗心,是先“j”後“i”。

13. 已知如下程式碼:

switch (m)
{
    case 0: System.out.println("Condition 0");
    case 1: System.out.println("Condition 1");
    case 2: System.out.println("Condition 2");
    case 3: System.out.println("Condition 3");break;
    default: System.out.println("Other Condition");
}

當m 的值為什麼時輸出”Condition 2”(ABC),選三項
A、 0
B、1
C、2
D、3
E、4
F、None

14. 已知如下類說明:

public class Test {
    private float f = 1.0;
    int m = 12;
    static int n=1;
    public static void main(String arg[]) {
    Test t = new Test();
    // some code...
    }
}

如下哪個使用是正確的(AD),選兩項

A、 t.f

B、this.n

C、Test.m

D、Test.n

靜態變數可以不用建立物件,直接從類中呼叫。

15. 下面能讓執行緒停止執行的有哪些(ABDEF),選五項

A. sleep();
B. stop();
C. notify();
D. suspend();
E. yield();
F. wait();
G. notifyAll();