1. 程式人生 > >Java基礎測試題

Java基礎測試題

無法 鍵盤輸入 ble 父類構造函數 continue 成員 run chan 不能編譯

Java 基礎測試題

一、選擇題

1.下面哪些是合法的變量名? ( DEG )

A.2variable

B. .variable2

C. ._whatavariable

D._3_

E.$anothervar

F.#myvar

G. $_¥

2.請問 “abcd” instanceof Object返回的值是? ( B )

A. “abcd” B. true C. false D. String

3.下面有關方法覆蓋說法不正確的是:( B )

A. 方法覆蓋要求覆蓋和被覆蓋的方法有相同的名字,參數列以及返回值

B. 方法覆蓋要求覆蓋和被覆蓋的方法必須具有相同的訪問權限;

C. 覆蓋的方法不能比被覆蓋的方法拋出更多的異常

D. 覆蓋的方法一定不能是private的

4. 下面代碼段中:( A )

String String=”String”;

System.out.println(String);

A. String B. 不知道 C. 編譯出錯 D. 運行出錯

5. 下面哪種是正確的創建Map集合的方式:( D )

A. Map m=new Map();

B. Map m=new Map(init capacity, increment capacity);

C. Map m=new Map(new Collection());

D. Map是接口,所以不能實例化。

6.關於被私有保護訪問控制符protected修飾的成員變量,以下說法正確的是? ( A )

A.可以被三種類所引用:該類自身、與它在同一個包中的其他類、在其他包中的該類的子類

B. 可以被兩種類訪問和引用:該類本身、該類的所有子類

C. 只能被該類自身所訪問和修改

D.只能被同一個包中的類訪問

7.下列有關繼承的說法。正確的是:(B )

A. 子類能繼承父類的所有方法和屬性;

B. 子類能繼承父類的非私有方法和屬性

C. 子類只能繼承父類public方法和屬性

D. 子類能繼承父類的方法,而不是屬性。

8.對於構造方法,下列敘述正確的是:(AC )

A. 構造方法的方法名必須與類名相同;

B. 構造方法必須用void申明返回類型

C. 構造方法可以被程序調用

D. 若編程人員沒再類中定義構造方法,程序將報錯。

9.下面是有關子類繼承父類構造函數的描述,其中正確的是:(CD )

A. 創建子類的對象時,先調用子類自己的構造函數,然後調用父類的構造函數。

B. 子類可以不調用父類的構造函數

C. 子類必須通過super()關鍵字調用父類的構造函數

D. 子類無法繼承父類的構造函數。

10. 下列說法中,正確的是:( A )

A. 類是變量和方法的集合體

B. 數組是無序數據的集合

C. 抽象類可以實例化

D. 類成員數據必須是公有的

11.在創建對象時必須( C )

A) 先聲明對象,然後才能使用對象

B) 先聲明對象,為對象分配內存空間,然後才能使用對象

C) 先聲明對象,為對象分配內存空間,對對象初始化,然後才能使用對象

D) 上述說法都對

12. Java中( C )

A) 一個子類可以有多個父類,一個父類也可以有多個子類

B) 一個子類可以有多個父類,但一個父類只可以有一個子類

C) 一個子類可以有一個父類,但一個父類可以有多個子類

D) 上述說法都不對

13.Java語言具有許多優點和特點,哪個反映了Java程序並行機制的特點?(B )

A) 安全性 B) 多線(程)性 C) 跨平臺 D) 可移植

14. Character流與Byte流的區別是( C )

A) 每次讀入的字節數不同 B) 前者帶有緩沖,後者沒有

C) 前者是字符讀寫,後者是字節讀寫 D) 二者沒有區別,可以互換使用

15.關於以下application的說明,正確的是( C )

1. class StaticStuff

2. {

3. static int x=10;

4. static { x+=5;}

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

6. {

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

8. }

9. static { x/=3;}

10. }

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

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

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

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

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

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=103

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

17.以下選項中循環結構合法的是( C )

A、while (int i<7)

{ i++;

System.out.println(“i is “+i);

}

B、 int j=3;

while(j)

{

System.out.println(“ j is “+j);

}

C、int j=0;

for(int k=0; j + k !=10; j++,k++)

{

System.out.println(“ j is “+ j + “k is”+ k);

}

D、 int j=0;

do{

System.out.println( “j is “+j++);

if (j = = 3) {continue loop;}

}while (j<10);

18. 類Test1定義如下: 1.public class Test1{

2. public float aMethod(float a,float b){return ..; }

3.

4.}

將以下哪種方法插入行3是不合法的。( B )

A、public float aMethod(float a, float b,float c){ return ..; }

B、public float aMethod(float c,float d){ return.. ; }

C、public int aMethod(int a, int b){ return ..; }

D、private float aMethod(int a,int b,int c){ return ..; }

19. 類Test1、Test2定義如下:

1. public class Test1

2.{ public float aMethod(float a,float b) throws

3. IOException { }

4. }

5. public class Test2 extends Test1{

6.

7.}

將以下哪種方法插入行6是不合法的。( A )

A、float aMethod(float a,float b){ }

B、public int aMethod(int a,int b)throws Exception{ }

C、public float aMethod(float p,float q){ }

D、public int aMethod(int a,int b)throws IOException{ }

20. 關於以下程序段,正確的說法是( C )

1. String s1=”abc”+”def”;

2. String s2=new String(s1);

3. if(s1= =s2)

4. System.out.println(“= = succeeded”);

5. if (s1.equals(s2))

6. System.out.println(“.equals() succeeded”);

A、行4與行6都將執行 B、行4執行,行6不執行

C、行6執行,行4不執行 C、行4、行6都不執行

21. 以下哪個方法用於定義線程的執行體? ( C )

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

22. 以下哪個關鍵字可以用來為對象加互斥鎖?( D )

A、transient B、static C、 serialize D、synchronized

23. 有以下方法的定義,請選擇該方法的返回類型( D )。

ReturnType method(byte x, double y) {

return (short)x/y*2;

}

A、byte B、short C、int D、double

24 以下哪項是接口的正確定義?( BD )

A、 interface B

{ void print(){};}

B、 abstract interface B

{ void print() ;}

C、 abstract interface B extends A1,A2 //A1、A2為已定義的接口

{ abstract void print(){ };}

D、 interface B

{ void print();}

25. A派生出子類B,B派生出子類C,並且在Java源代碼中有如下聲明:

1. A a0=new A();

2. A a1 =new B();

3. A a2=new C();

問以下哪個說法是正確的? ( D )

A、只有第1行能通過編譯 B、第1、2行能通過編譯,但第3行編譯出錯

C、第1、2、3行能通過編譯,但第2、3行運行時出錯

D、第1行、第2行和第3行的聲明都是正確的

26. 假設A類有如下定義,設a是A類的一個實例,下列語句調用哪個是錯誤的?( C )

class A

{ int i;

static String s;

void method1() { }

static void method2() { }

}

A、System.out.println(a.i);B、a.method1(); C、A.method1();

D、A.method2()

27. 以下關於繼承的敘述正確的是( A )。

A、在Java中類只允許單一繼承

B、在Java中一個類只能實現一個接口

C、在Java中一個類不能同時繼承一個類和實現一個接口

D、在Java中接口只允許單一繼承

28. 給出下面代碼,關於該程序以下哪個說法是正確的?( C )

public class Person{

static int arr[] = new int[5];

public static void main(String a[]) {

System.out.println(arr[0]);}

}

}

A、編譯時將產生錯誤 B、編譯時正確,運行時將產生錯誤

C、輸出零 D、輸出空

29 在使用interface聲明一個接口時,只可以使用( D )修飾符修飾該接口。

A、private B、protected C、private protected D、public

30. 編譯並運行以下程序,以下描述哪個選項是正確的( D )

1. class A{

2. protected boolean equals(){

3. return super.equals();

4. }

5. }

A、編譯通過運行無異常 B、編譯通過但運行時出錯

C、行2出錯,不能成功編譯 D、不能成功編譯,行3出錯

31. 有語句String s=”hello world”; ,以下操作哪個是不合法的?( B )

A、int i=s.length(); B、s>>>=3;

C、String ts=s.trim(); D、String t=s+”!”;

32. 閱讀以下代碼:

import java.io.*;

import java.util.*;

public class foo{

public static void main (String[] args){

String s;

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

}

}

輸出結果應該是:( C )

A.代碼得到編譯,並輸出“s=”

B.代碼得到編譯,並輸出“s=null”

C.由於String s沒有初始化,代碼不能編譯通過

D.代碼得到編譯,但捕獲到 NullPointException異常

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

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.9 B.輸出結果為:value is 9

C.輸出結果為:value is 9.0

D.編譯錯誤

34. 執行完以下代碼int [ ] x = new int[10];後,以下哪項說明是正確的( A )

A.x[9]為0

B.x[9]未定義

C.x[10]為0

D.x[0]為空

35. 關於以下程序段,正確的說法是( C )

1. String s1=“a”+“b”;

2. String s2=new String(s1);

3. if(s1= =s2)

4. System.out.println(“= = is succeeded”);

5. if (s1.equals(s2))

6. System.out.println(“.equals() is succeeded”);

A.行4與行6都將執行 B.行4執行,行6不執行

C.行6執行,行4不執行 C.行4、行6都不執行

36. 以下程序的運行結果是:( C )

public class Increment{

public static void main(String args[]){

int c;

c = 2;

System.out.println(c);

System.out.println(c++);

System.out.println(c);

}

}

A.2 2 2 B.2 3 3 C.2 2 3 D.3 4 4

37 若a的值為3時,下列程序段被執行後,c的值是多少?( C )

if ( a>0 )

if ( a>3 ) c = 2;

else c = 3;

else c = 4;

A、1 B、2 C、3 D、4

38. 下面哪一個操作符的優先級最高? ( D )

A、&& B、||

C、! D、( )

39. 執行語句int i = 1, j = ++i + ++i + i--; 後i與j的值分別為( D )。

A、2與6 B、3與8

C、3與5 D、2與8 (++i先運算再取值)

40. 下面哪一個循環會導致死循環?( C )

A、for (int k = 0; k < 0; k++)

B、for (int k = 10; k > 0; k--)

C、for (int k = 0; k < 10; k--)

D、for (int k = 0; k > 0; k++)

41. 有如下程序段:

int a = b = 5;

String s1 = "祝你今天考出好成績!";

String s2 = s1;

則表達式a == b與s2 == s1的結果分別是:( A )。

A、true與true B、false與true

C、true與false D、false與false

42. 在Java中用什麽關鍵字修飾的方法可以直接通過類名來調用?( A )

A、static B、final C、private D、void

43. 有如下程序段:

int total = 0;

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

if ( i == 1) continue;

if ( i == 2) break;

total += i;

}

則執行完該程序段後total的值為:( A )。

A、0 B、1 C、3 D、6

44.如果希望某個變量只可以被類本身訪問和調用,則應該使用下列哪一種訪問控制修飾( A )。

A、private B、protected

C、private protected D、public

45.欲構造ArrayList類的一個實例,此類繼承了List接口,下列哪個方法是正確的?( B )

A、ArrayList myList=new Object();

B、List myList=new ArrayList();

C、ArrayList myList=new List();

D、List myList=new List();

46. 指出正確的表達式 ( BD )

A、 byte=128;

B、 Boolean=null;

C、 long l=0xfffL;

D、 double=0.9239d;

47. 指出下列程序運行的結果 ( B )

public class Example{

String str=new String("good");

char[] ch = {‘a‘,‘b‘,‘c‘};

public static void main(String args[]){

Example ex=new Example();

ex.change(ex.str,ex.ch);

System.out.print(ex.str+" and ");

Sytem.out.print(ex.ch);

}

public void change(String str,char ch[]){

str="test ok";

ch[0]=‘g‘;

}

}

A、 good and abc

B、 good and gbc

C、 test ok and abc

D、 test ok and gbc

48 運行下列程序, 會產生什麽結果 ( D )

public class X extends Thread implements Runnable{

public void run(){

System.out.println("this is run()");

}

public static void main(String args[]) {

Thread t=new Thread(new X());

t.start();

}

}

A、 第一行會產生編譯錯誤

B、 第六行會產生編譯錯誤

C、 第六行會產生運行錯誤

D、 程序會運行和啟動

49. 下面語句在編譯時出現警告或錯誤的是( ABCD )

A. float f=3.14;

B. char c=”c”;

C. Boolean b=null;

D. int i=10.0;

50. 給出下面代碼段, 哪行將引起一個編譯時錯誤?( D )

1) public class Test {

2) int n = 0;

3) int m = 0;

4) public Test(int a) { m=a; }

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

6) Test t1,t2;

7) int j,k;

8) j=3; k=5;

9) t1=new Test();

10) t2=new Test(k);

11) }

12) }

A. 行1 B. 行4 C. 行6 D. 行9

51. 下面程序中類ClassDemo中定義了一個靜態變量sum,分析程序段的輸出結果。

( C )

class ClassDemo {

public static int sum=1;

public ClassDemo() {

sum = sum + 5;

}

}

public class ClassDemoTest{

public static void main(String args[]) {

ClassDemo demo1=new ClassDemo();

ClassDemo demo2=new ClassDemo();

System.out.println(demo1.sum);

}

}

A. 0 B. 6 C. 11 D. 2

52. 下面關於數組聲明和初始化的語句那個有語法錯誤?( C )

A)int a1[]={3,4,5};

B)String a2[]={"string1","string1","string1"};

C)String a3[]=new String(3);

D)int[][] a4=new int[3][3];

53. 下面的方法,當輸入為2的時候返回值是多少?( D )

public int getValue(int i) {

int result = 0;

switch (i) {

case 1:

result = result + i;

case 2:

result = result + i * 2;

case 3:

result = result + i * 3;

}

return result;

}

A)0 B)2 C)4 D)10

54. getCustomerInfo()方法如下,try中可以捕獲三種類型的異常,如果在該方法運行中產生了一個IOException,將會輸出什麽結果( A )

public void getCustomerInfo() {

try {

// do something that may cause an Exception

} catch (java.io.FileNotFoundException ex){

System.out.print("FileNotFoundException!");

} catch (java.io.IOException ex){

System.out.print("IOException!"); } catch (java.lang.Exception ex){

System.out.print("Exception!");

}

}

A)IOException!

B)IOException!Exception!

C)FileNotFoundException!IOException!

D)FileNotFoundException!IOException!Exception!

55 新建一個流對象,下面哪個選項的代碼是錯誤的?( B )

A)new BufferedWriter(new FileWriter("a.txt"));

B)new BufferedReader(new FileInputStream("a.dat"));

C)new GZIPOutputStream(new FileOutputStream("a.zip"));

D)new ObjectInputStream(new FileInputStream("a.dat"));

56. Java的集合框架中重要的接口java.util.Collection定義了許多方法。選項中哪個方法

不是Collection接口所定義的?( C )

A)int size()

B)boolean containsAll(Collection c)

C)compareTo(Object obj)

D)boolean remove(Object obj)

57. 一個線程在任何時刻都處於某種線程狀態(thread state),例如運行狀態、阻塞狀態、

就緒狀態等。一個線程可以由選項中的哪種線程狀態直接到達運行狀態?( D )

A)死亡狀態

B)阻塞狀態(對象lock池內)

C)阻塞狀態(對象wait池內)

D)就緒狀態

58. 選項中哪一行代碼可以替換題目中//add code here而不產生編譯錯誤?( A )

public abstract class MyClass {

public int constInt = 5;

//add code here

public void method() {

}

}

A)public abstract void method(int a);

B)value = value + 5;

C)public int method();

D)public abstract void anotherMethod() {}

59. 下面是People和Child類的定義和構造方法,每個構造方法都輸出編號。在執行new

Child("mike")的時候都有哪些構造方法被順序調用?請選擇輸出結果 ( D )

class People {

String name;

public People() { System.out.print(1); }

public People(String name) {

System.out.print(2);

this.name = name;

}

}

class Child extends People {

People father;

public Child(String name) {

System.out.print(3);

this.name = name;

father = new People(name + ":F");

}

public Child(){ System.out.print(4); }

}

A)312 B) 32

C) 432 D) 132

60. 下面哪個選項中的代碼沒有定義內部類,或者錯誤的定義了內部類? ( C )

A)public Class Line {

int length;

Class Point {//內部類代碼}

}

B) public Class Line {

public Point getPoint() {

return new Point(){//內部類代碼};

}

}

C) public Class Line {

//外部類代碼

}

Class Point {//內部類代碼}

D) public Class Line {

public int calcLength() {

Class Point {//內部類代碼}

}

}

二、編程題

1 將數組 int [] a={9,5,7,8,1,3,2,6,4} 進行冒泡排序

2 寫出單例設計模式

3 鍵盤輸入十行數據,直到輸入quit就退出程序,將輸入的數據保存在D:\temp\info.txt中,該文件不存在就創建該文件。

4 模擬生成1個班級,該班級有9個學生對象,用集合模擬下列操作。

A.班級再增加一位學生

B.將學號是S001的姓名修改為”張恒”

C.統計所有學生的平均分

D.將學生的所有信息保存到文件student.txt中

5 模擬四個線程對同一個數據I進行操作

1號和3號線程做加一

2號和4號線程做減一

Java基礎測試題