【考試】java基礎知識測試,看你能得多少分?


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水平,但是生活並不完美。
加油吧,同學們!學習的路上我們一起。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM