Java基礎測試題
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基礎測試題