筆試_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) 下列選項中關於
A. 封裝就是將屬性私有化,提供公有的方法訪問私有屬性
B. 屬性的訪問方法包括setter方法和getter方法
C. setter方法用於賦值、getter方法用於取值
D.類的屬性必須進行封裝,否則無法通過編譯
7) 使用Java實現封裝,第一步是修改屬性可見性來限制對屬性的訪問,第二步是建立賦值和取值方法,用於對屬性的訪問,第三步應該是( )。 (單選)
A.使用賦值和取值方法訪問屬性
B. 編寫常規方法訪問屬性
C.在賦值和取值方法中,加入對屬性的存取限制
D. 編寫main方法建立物件,呼叫賦值和取值方法訪問屬性
8) 分析如下所示的
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();}
C、abstract 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 D、16
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語句