1 前言
共有5道java基礎知識的單項選擇題,每道20分,共計100分。解析和答案在最后。
2 試題
2.1 如下程序運行結果是什么?
class Parent {
public Parent(String s) {
System.out.print("B");
}
}
public class Son extends Parent {
public Son(String s) {
System.out.print("D");
}
public static void main(String[] args) {
new Son("");
System.out.print("C");
}
}
-
**A.** BD
-
**B.** DB
-
**C.** BDC
-
**D.** DBC
- E. 編譯失敗
2.2 如下程序運行結果是什么?
public class Mixer {
Mixer() {}
Mixer(Mixer m) {
m1 = m;
}
Mixer m1;
public static void main(String[] args) {
Mixer m2 = new Mixer();
Mixer m3 = new Mixer(m2);
m3.go();
Mixer m4 = m3.m1;
m4.go();
Mixer m5 = m2.m1;
m5.go();
}
void go() {
System.out.print("hi ");
}
}
-
**A.** hi
-
**B.** hi hi
-
**C.** hi hi hi
-
**D.** 編譯失敗
-
**E.** hi 接着一個異常
-
**F.** hi hi 接着一個異常
2.3 下面哪一個選項的說法是正確的?
public class Operate{
public static void main(String[] args) {
String s = "";
Boolean b1 = true;
boolean b2 = false;
if((b2=false) | (21%5)>2)
s += "x";
if(b1 || (b2=true)) {
s += "y";
if(b2 == true)
s += "z";
System.out.println(s);
}
}
}
-
**A.** 編譯失敗
-
**B.** 輸出結果中包括 x
-
**C.** 輸出結果中包括 y
-
**D.** 輸出結果中包括 z
-
**E.** 運行時會拋出一個異常
2.4 下面哪一個選項的說法是正確的?
public static void sort1() {
Set set = new TreeSet();
set.add("2");
set.add(3);
set.add("1");
Iterator it = set.iterator();
while (it.hasNext())
System.out.print(it.next() + "");
}
-
**A.** sort1方法會打印出 1 2
-
**B.** sort1方法會打印出 1 2 3
-
**C.** sort1會打印3個數字,順序不定
-
**D.** 編譯失敗
-
**E.** 運行時會拋出一個異常
2.5 如下程序運行結果是什么?
class A {
void m() {
System.out.println("outer");
}
}
public class Inners {
public static void main(String[] args) {
new Inners().go();
}
void go() {
new A().m();
class A {
void go() {
System.out.println("inner");
}
}
}
class A {
void m() {
System.out.println("middle");
}
}
}
-
**A.** inner
-
** B.** outer
-
**C. ** middle
-
**D.** 編譯失敗
-
**E.** 運行時會拋出一個異常
3 解析
3.1 2.1題 E 正確
不能滿足Son構造函數中隱含的super()調用,因為Parent中沒有無變元構造函數。僅當類沒有顯式定義的構造函數時,編譯器才會產生默認的無變元構造函數。
3.2 2.2題 F 正確
m2對象的m1實例變量從來不會被初始化,因此當m5試圖使用它時,將拋出NullPointerException異常。
3.3 2.3題 C 正確
首先裝箱負責處理布爾運算。第一個if所在行使用了求余運算符,它返回除法運算的余數,這里為1。而且,這一行還將b2設置成false,它不會測試b2的值。第二個if所在行將b2設置成true,它不會測試這個值。但是,短路運算符會阻止測試表達式b2=true。
3.4 2.4題 E 正確
不能將String和Integer同時放入同一個TreeSet中。不采用泛型,編譯器無法知道什么類型適合於這個TreeSet,因此它允許任何東西進行編譯。在運行時,TreeSet將深度在添加元素時排序它們,而在試圖比較Integer和String時,會拋出ClassCastException異常。
3.5 2.5題 C 正確
類A的“內部”版本沒有使用,因為它的聲明位於go()方法內創建A的實例之后。
4 答案 [E , F , C , E , C]
5 結語
本文只是簡單的收集和整理了5道javaSE的基礎題目,大家可以測試一下,對自己java基礎知識情況有一個簡單的了解。希望大家在學習實用技術的時候,也多注意自己java基礎素養的提高。
不能僅憑對上述幾道問題的回答情況來評價一個人真正的java水平,但是生活並不完美。
加油吧,同學們!學習的路上我們一起。