1. 程式人生 > >筆試_Java基礎綜合題2

筆試_Java基礎綜合題2

一、選擇題(50*2分)

1) Java類中,使用以下()宣告語句來定義公有的int型常量MAX。(單選)

A. public int MAX = 100;

B.final int MAX = 100;

C. public static int MAX = 100;

D.public static final int MAX = 100;

2) Java中,下列關於方法過載的說法中錯誤的是( )。(多選)

A. 方法過載要求方法名稱必須相同

B. 過載方法的引數列表必須不一致

C.過載方法的返回型別必須一致

D.一個方法在所屬的類中只能被過載一次

3) 以下程式碼段將建立幾個物件()。

String s1="bc";

String s2="bc";   

A. 2

B. 3

C. 0

D. 1

4) Java中,下面對於建構函式的描述正確的是( )。  (單選)

A. 類必須顯式定義建構函式

B. 建構函式的返回型別是void

C. 建構函式和類有相同的名稱,並且不能帶任何引數

D.一個類可以定義多個建構函式

5) 關於垃圾收集的哪些敘述是對的。   

A. 垃圾收集能夠在期望的時間釋放被java物件使用的記憶體。

B. 垃圾收集將檢查並釋放不再使用的記憶體。

C. 垃圾收集允許程式開發者明確指定並立即釋放該記憶體。

D. 程式開發者必須自己建立一個執行緒進行記憶體釋放的工作。

6) 下列選項中關於

Java中封裝的說法錯誤的是( )。 (單選) 

A. 封裝就是將屬性私有化,提供公有的方法訪問私有屬性

B. 屬性的訪問方法包括setter方法和getter方法

C. setter方法用於賦值、getter方法用於取值

D.類的屬性必須進行封裝,否則無法通過編譯

7) 使用Java實現封裝,第一步是修改屬性可見性來限制對屬性的訪問,第二步是建立賦值和取值方法,用於對屬性的訪問,第三步應該是( )。      (單選)

A.使用賦值和取值方法訪問屬性

B. 編寫常規方法訪問屬性

C.在賦值和取值方法中,加入對屬性的存取限制

D. 編寫main方法建立物件,呼叫賦值和取值方法訪問屬性

8) 分析如下所示的

Java程式碼,其中this關鍵字的意思是( )。  (單選)

public class Test {

private String name;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;            //this關鍵字所在的行

}

}

A.name屬性

B.Test類的內部指代自身的引用

C. Test類的物件引用Test類的其他物件

D. 指所在的方法

9) 下面哪個對類的宣告是錯誤的()   

A. class MyClass extends MySuperClass1, MySupperClass2 {}

B. public class MyClass{}        

C. abstract class MyClass implements YourInterface1, Youriterface2 {}

D. private class MyClass {}

E. class MyClass extends MySuperClass implements YourInterface {}

10) Java語言中,下列關於類的繼承的描述,正確的是( )。   (單選)

A. 一個類可以繼承多個父類

B.一個類可以具有多個子類

C. 子類可以使用父類的所有方法  //私有方法不行

D. 子類一定比父類有更多的成員方法

11) 執行下面程式碼,下面描述正確的是()

public class Person{

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

   public static void main(String a[]){

     System.out.println(arr[1]);

   }

}   

A. 產生編譯錯誤

B. 輸出空

C. 編譯正確,執行錯誤

D. 輸出0

12) 給定一個Java程式Test.java的程式碼如下所示,編譯時,會出現以下( )情況。(單選)

class Parent {

public int count() {               // 第1行

return 0;

}

}

public class Test  extends Parent {

private int i;

public int count() {               // 第2行

return i % 9;                // 第3行

}

}

A.編譯通過

B. 在第1行引發編譯錯誤

C. 在第2行引發編譯錯誤

D. 在第3行引發編譯錯誤

13) 下列程式段執行後,t5的結果是()

int t1=5,t2=6,t3=7,t4,t5;

t4=t1<t2?t1:t2;

t5=t4<t3?t4:t3;   

A. 7

B. 5

C. 6

D. 4 

14) 給定Java程式Child.java的程式碼如下所示,則編譯執行該類的結果是()。(單選)

class Parent {

    Parent() {

        System.out.println("parent");

    }

}

public class Child extends Parent {

Child(String s) {

        System.out.println(s);

    }

    public static void main(String[] args) {

        Child child = new Child("child");

    }

}

A. 輸出:child

B. 輸出:child

     parent

C.輸出:parent

child

D. 編譯錯誤

15) 下列選項中關於Java中super關鍵字的說法錯誤的是( )。(單選)

A. super關鍵字是在子類物件內部指代其父類物件的引用

B.super關鍵字不僅可以指代子類的直接父類,還可以指代父類的父類

C. 子類可以通過super關鍵字呼叫父類的方法

D. 子類可以通過super關鍵字呼叫父類的屬性

16) 以下建立了幾個物件

String A,B,C

A="a";

B="b":

A=A+B;

StringBuffer D=new StringBuffer("abc");

D=D.append("567");

A. 6

B. 4

C. 3

D. 5

17) 以下關於Object類說法錯誤的是( )。(單選)

A. 一切類都直接或間接繼承自Object類

B.介面亦繼承Object類

C. Object類中定義了toString()方法

D. Object類在java.lang包中)

18) Java中,多型的實現不僅能減少編碼的工作量,還能大大提高程式的可維護性及可擴充套件性,那麼實現多型的步驟包括以下幾個方面除了( )。(單選)

A. 子類重寫父類的方法

B.子類過載同一個方法

C. 定義方法時,把父類型別作為引數型別;呼叫方法時,把父類或子類的物件作為參 數傳入方法

D. 執行時,根據實際建立的物件型別動態決定使用哪個方法

19) 給定Java程式碼如下所示,則編譯執行後,輸出結果是( )。(單選)

class Parent {

  public void count() {

    System.out.println(10%3);

  }

}

public class Child  extends Parent{

  public void count() {

    System.out.println(10/3);

  }

  public static void main(String args[]) {

    Parent p = new Child();

    p.count();

  }

}

A. 1

B. 1.0

C.3

D. 3.3333333333333335

20) 分析如下Java程式碼,如果想在控制檯上輸出“B類的test()方法”,則在橫線處應填入( )。(多選)

class A {

    public void test() {

        System.out.println("A類的test()方法");

    }

}

class B extends A {

    public void test() {

        System.out.println("B類的test()方法");

    }

    public static void main(String args[]) {

            ________________                               

    }

}

A.A a = new B();

a.test();

B. A a = new A();

     a.test();

C. B b = new A();

     b.test();

D.B b = new B();

b.test();

21) 編譯執行如下Java程式碼,輸出結果是(   )。(單選)

class Base {

public void method(){

System.out.print ("Base method");

}

}

class Child extends Base{

public void methodB(){

System.out.print ("Child methodB");

}

}

class Sample {

public static void main(String[] args) {

Base base= new Child();

base.methodB();

}

}

A. Base method

B.Child methodB

C. Base method Child MethodB

D.編譯錯誤

22) 下面關於Java介面的說法錯誤的是( )。(單選)

A. 一個Java介面是一些方法特徵的集合,但沒有方法的實現

B. Java介面中定義的方法在不同的地方被實現,可以具有完全不同的行為

C.Java介面中可以宣告私有成員  

D. Java介面不能被例項化

23) Java介面中定義常量,下面語法錯誤的是( )。(單選)

A. static int MALE = 1;

B. final int MALE = 1;

C. int MALE = 1;

D.private int MALE = 1;

24)  Teacher和Student是類Person的子類:

Person p;

Teacher t;

Student s;

//p,t and s are all non-null.

if(t instanceof Person)  {s=(Student)t;}

最後一句語句的結果是()

A. 編譯時正確,但執行時錯誤

B. 將構造一個Student物件

C. 表示式是錯誤的

D. 表示式是合法的

25) 給定如下Java程式程式碼,在橫線處加入( )語句,可以使這段程式碼編譯通過。(多選)

interface Parent{

    public int count(int i);

}

public class Test implements Parent {

    public int count(int i){

        return i % 9;

}

  public static void main(String[] args){

        ________________

        int i = p.count(20);

    }

}

A.Test p = new Test();

B.Parent p = new Test();AB

C.Parent p = new Parent();

D. Test p = new Parent();

26、閱讀以下程式碼:

import java.io.*;

import java.util.*;

public class foo{

public static void main (String[] args){

String s;

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

}

}

  輸出結果應該是:(

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

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

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

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

27、 String s = "story"; 下列選項中的語句書寫正確的是( )。
A. s += "books";B. char c = s[1];
C. int len = s .length;
D. s = s - "books";

28、下述程式碼的執行結果是()。   (選擇一項)

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.println(sooper.getLength()+ “,” + sub.getLength() );

}

}

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

29、三種字串判空串方法:
      1: bool isEmpty = (str.Length == 0);
2: bool isEmpty = (str == String.Empty);
3: bool isEmpty = (str == "");
  哪種方法正確?()。  (選擇一項)
    A. 1    B. 2    C. 3

30、String  s=new String(“hello”);

String  t =new String(“hello”);

char c [ ] ={‘h’,’e’,’l’,’l’,’o’};

下列()表示式返回true 。  (多選)

A.s.equals(t);        B.t.equals(c);           C.s= =t;

D.t.equals (new String(“hello”));                E.t= = c;

31、下列說法正確的是()。 (多選)

A.  Java語言只允許單一繼承      

B.  Java語言只允許實現一個介面

C.  Java語言不允許同時繼承一個類並實現一個介面

D.  Java語言的單一繼承使得程式碼更加可靠.

32、對於下列程式碼

public class Parent {

public int addValue (int a ,int b ){

int s;

s = a + b;

return s;

}

}

class Child extends Parent {

}

下述方法可以加入類Child的是()。  (多選)

A .  int addValue(int a ,int b){//do something…}

B.  public void addValue(){//do something…}BC

C.  public int addValue(int a ){//do something…}

D.  public int addValue( int a, int b )throws MyException {//do something…}

33、下面程式的執行結果是()。  (單選)

class A{

static{

System.out.print("a");

}

public A (){

System.out.print("x");

}

}

class B extends A{

static{

System.out.print("b");

}

public B (){

System.out.print("y");

}

}

public class Test{

public static void main(String[] args){

A ab = new B ();

ab = new B ();

}

}

A、Abxyxy//abxyxy

B、Axxyb

C、Abyxyx

D、xyxyAb

34、請看下列程式,執行結果是()。

class Super{

int i=10;

Super(){

print();

i=20;

}

void print(){

System.out.print(i);

}

}

public class Sub extends Super{

int j=30;

Sub(){

print();

j=40;

}

void print(){

System.out.print(j);

}

public static void main(String[] args){

System.out.print(new Sub().j);

}

}

A、102030

B、03040

C、3040

D、程式碼錯誤

35、下面程式段的時間複雜度是()

for(i=0;i<:n;i++)

for(j=1;j<:m;j++)

A[i][j]=0;

A.O(n) B.O(m+n+1) C. O(m+n) D.O(m*n)

36、在類的定義中可以有兩個同名函式,這種現象稱為函式(   )。

A)封裝            (B)繼承

C)覆蓋            D)過載

37、在類的定義中建構函式的作用是(  )。
A)保護成員變數    (B)讀取類的成員變數

C)描述類的特徵    D)初始化成員變數

38、下面哪一個是Java中不合法的識別符號(   )。
A)$persons        (B)twoNum

C)_myVar           D*point

39、下面非法的是()。  (多選)

(A) int I = 32;            (B) float f = 45.0;

(C) double d = 45.0;       (D) char c = ‘u’; 

40、如果一個類的成員變數只能在所在類中使用,則該成員變數必須使用的修飾是()

(A) public                 (B) protected

(C) private                (D) static

41、下面關於預設構造方法的描述中正確的是(

A. 當類中沒有定義任何構造方法時,Java編譯器將為這個類建立預設構造方法

B. 預設構造方法可以初始化其他方法中定義的變數

C. Java編譯器會為所有的類建立預設構造方法。

D. 如果在一個類中定義的構造方法都聲明瞭引數,Java編譯器將為這個類建立一個預設構造方法

42、Java中,一個類可同時定義許多同名的方法,這些方法的形式引數的個數、型別或順序各不相同,傳回的值也可以不相同。這種面向物件程式特性稱為(  )

A) 隱藏

B) 重寫

C 過載

D) Java不支援此特性

43、給出下面程式碼,關於該程式以下哪個說法是正確的?(   

public class Person{

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

public static void main(String a[])

{

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

}

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

C、輸出零 D、輸出空

44、下列類定義中哪些是合法的抽象類的定義?(  

A、abstract Animal{abstract void growl();}

B、class abstract Animal{abstract void growl();}

Cabstract class Animal{abstract void growl();}

D、abstract class Animal{abstract void growl(){System.out.println(“growl”);};}

45、下面的程式碼段執行之後count的值是什麼(      )

int count = 1;

for (int i = 1; i <= 5; i++) {

count += i;

}

System.out.println(count);

A、5  B、1 C、15   D16

46、下列程式段執行後的結果是(   )。

String s = new String("abcdefg");

for (int i=0; i<s.length(); i+=2){

System.out.print(s.charAt(i));

}

A) aceg   B) ACEG    C) abcdefg    D) abcd

47、定義整型變數:int n=456;,表示式的值為5的是()。  (多選)

A. n%10

B. n/10

C. (n-n/100*100)/10

D. n/10%10

48、覆蓋與過載的關係是  (  )

A、覆蓋只有發生在父類與子類之間,而過載可以發生在同一個類中

B.覆蓋方法可以不同名,而過載方法必須同名

C.final修飾的方法可以被覆蓋,但不能被過載

D.覆蓋與過載是同一回事

49、不允許作為類及類成員的訪問控制符的是(      )。

A. public                    B. private

C. static                     D. protected

50、關於選擇結構下列哪個說法正確? ( )

A.if語句和 else語句必須成對出現

B.if語句可以沒有else語句對應

C.switch結構中每個case語句中必須用break語句

D.switch結構中必須有default語句