java基礎知識練習題

前段時間學習Java,作了幾道基礎題。題都仍是面向基礎的一些題。分享給你們一塊兒學習java

#答案在底部程序員

選擇題(共50題,每題2分,滿分100分)
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)    給定Java代碼以下所示,在橫線處新增下列( )方法,是對cal方法的重載。(多選)
public class Test{
  public void cal(int x, int y, int z) {}
  ________________                                                            
}
    A.    public int cal(int x, int y, float z){ return 0; }
    B.    public int cal(int x, int y, int z){ return 0; }
    C.    public void cal(int x, int z){ }
    D.    public void cal(int z, int y, int x){ }

4)    在Java中,下面對於構造函數的描述正確的是( )。
    A.    類必須顯式定義構造函數
    B.    構造函數的返回類型是void
    C.    構造函數和類有相同的名稱,而且不能帶任何參數
    D.    一個類能夠定義多個構造函數

5)    下面Java代碼的運行結果是(  )。
class Penguin {
    private String name=null; // 名字
    private int health=0; // 健康值
    private String sex=null; // 性別
    public void Penguin() {
        health = 10;
        sex = "雄";
        System.out.println("執行構造方法。");
    }
    public void print() {
        System.out.println("企鵝的名字是" + name +
                ",健康值是" + health + ",性別是" + sex+ "。");
    }
    public static void main(String[] args) {
        Penguin pgn = new Penguin();
        pgn.print();
    }
}
    A.    企鵝的名字是null,健康值是10,性別是雄。
    B.    執行構造方法。
        企鵝的名字是null,健康值是0,性別是null。
    C.    企鵝的名字是null,健康值是0,性別是null。
    D.    執行構造方法。
        企鵝的名字是null,健康值是10,性別是雄。

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)    在Java中,如下程序編譯運行後的輸出結果爲( )。
public class Test {
    int x, y;
    Test(int x, int y) {
        this.x = x;
        this.y = y;
    }
    public static void main(String[] args) {
        Test pt1, pt2;
        pt1 = new Test(3, 3);
        pt2 = new Test(4, 4);
        System.out.print(pt1.x + pt2.x);
    }
}
    A.    6
    B.    3 4
    C.    8
    D.    7

10)    在Java語言中,下列關於類的繼承的描述,正確的是( )。
    A.    一個類能夠繼承多個父類
    B.    一個類能夠具備多個子類
    C.    子類可使用父類的全部方法
    D.    子類必定比父類有更多的成員方法

11)    Java中,若是類C是類B的子類,類B是類A的子類,那麼下面描述正確的是( )。
    A.    C不只繼承了B中的公有成員,一樣也繼承了A中的公有成員
    B.    C只繼承了B中的成員
    C.    C只繼承了A中的成員
    D.    C不能繼承A或B中的成員

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)    給定以下一個Java源文件Child.java,編譯並運行Child.java,如下結果正確的是( )。
class Parent1 {
    Parent1(String s){
        System.out.println(s);
    }
}
class Parent2  extends Parent1{
    Parent2(){
        System.out.println("parent2");
    }
}
public class Child extends Parent2 {
    public static void main(String[] args) {
        Child child = new Child();
    }
}
    A.    編譯錯誤:沒有找到構造器Child()
    B.    編譯錯誤:沒有找到構造器Parent1()
    C.    正確運行,沒有輸出值
    D.    正確運行,輸出結果爲:parent2

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)    分析以下所示的Java代碼,則選項中的說法正確的是( )(多選)。
class Parent{
    public String name;
    public Parent(String pName){
        this.name = pName;
    }
}
public class Test  extends Parent {  //1
    public Test(String Name){               //2
        name="hello";          //3
        super("kitty");          //4
    }    
}
    A.    第2行錯誤,Test類的構造函數中參數名稱應與其父類構造函數中的參數名相同
    B.    第3行錯誤,應使用super關鍵字調用父類的name屬性,改成super.name="hello";
    C.    第4行錯誤,調用父類構造方法的語句必須放在子類構造方法中的第一行
    D.    程序編譯經過,無錯誤

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)    在Java接口中,下列選項中屬於有效的方法聲明是( )(多選)。
    A.    public void aMethod();
    B.    void aMethod();
    C.    void aMethod(){}
    D.    private void aMethod();

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();
    C.    Parent p = new Parent();
    D.    Test p = new Parent();

26)    下列選項中關於Java中ArrayList、LinkedList、HashMap三個類的描述錯誤的是(   )。
    A.    ArrayList和LinkedList均實現了List接口
    B.    ArrayList的訪問速度比LinkedList快
    C.    添加和刪除元素時,ArrayList的表現更佳
    D.    HashMap實現Map接口,它容許任何類型的鍵和值對象,容許將null用做鍵或值

27)    關於Java中的集合實現類,下列說法描述錯誤的是(   )。
    A.    HashMap是Map接口的實現類
    B.    ArrayList對象是長度可變的對象引用數組
    C.    集合框架都包含三大塊內容:對外的接口、接口的實現和對集合運算的算法
    D.    Set中存儲一組不容許重複、有序的對象

28)    對於Java中的集合類java.util.ArrayList,如下說法正確的是(   )。
    A.    這個集合中的元素是無序的
    B.    能夠經過鍵來獲取這個集合中的元素
    C.    在對這個集合的元素執行遍歷操做時,效率比較高
    D.    能夠經過addFirst()方法,在列表的首部插入元素

29)    給定以下Java代碼,其中第(   )行代碼有錯誤。
import java.util.*;
public class MapTest {
    public static void main(String[] args) {
        List pList = new ArrayList();
        pList.add("A");                         //第五行
        pList.add("B");                         //第六行
        for (int i = 0; i < pList.size(); i++) {          //第七行
            String str = pList.get(i);               //第八行
            System.out.print(str);         
        }
    }
}

    A.    五
    B.    六
    C.    七
    D.    八

30)    給定以下Java代碼,能夠填入橫線處的代碼是(   )。
import java.util.*;
public class Test {
    public static void main(String[] args) {
        ________
        list.addLast("001");
    }
}
    A.    List list = new ArrayList();
    B.    List list = new List();
    C.    ArrayList list = new ArrayList();
    D.    LinkedList list = new LinkedList();

31)    在Java中,(   )類的對象可被用做堆棧或者隊列。
    A.    LinkedList
    B.    ArrayList
    C.    Collection
    D.    HashMap

32)    在Java中,關於HashMap類的描述,如下說法錯誤的是(   )。
    A.    HashMap使用鍵/值的形式保存數據
    B.    HashMap可以保證其中元素的順序
    C.    HashMap的存儲方式是哈希表,查詢指定元素效率高
    D.    HashMap經過get( key)獲取對應的值

33)    閱讀下面的Java代碼,運行結果描述正確的是(   )。
import java.util.*;
public class TestMap{
     public static void main(String[] args){
        Map map=new HashMap( );
         map.put(「first」,」football」);
         map.put(「first」,」basketball」);
         System.out.print(map.get(「first」));
    }
}
    A.    編譯時發生錯誤
    B.    編譯經過,運行時發生錯誤
    C.    正確運行,顯示basketball
    D.    正確運行,顯示football

34)    在Java中,集合框架 API定義了一組用於批量操做數據的接口和類,它們包括在(   )包中。
    A.    java.lang
    B.    java.sql
    C.    java.util
    D.    java.math

35)    如下選項中關於XML文檔的說法正確的是(   )(多選)。
    A.    XML文檔中使用用戶自定義標籤,標籤名不區分大小寫
    B.    可使用DTD或者XSD定義XML文檔結構
    C.    XML文檔的做用是數據存儲、數據交換、數據顯示
    D.    XML文檔老是以一個XML聲明開始

36)    如下選項中關於DOM和SAX的說法錯誤的是(   )。
    A.    DOM和SAX都是目前經常使用的XML解析技術
    B.    DOM把XML文檔映射成一個倒掛的樹狀結構
    C.    DOM模型內存消耗小,DOM解析器能提供更好的性能優點
    D.    SAX讀取文檔時會激活一系列事件,推給事件處理器,由事件處理器來訪問文檔

37)    如下選項中關於Java中文件輸入輸出的說法正確的是(   )(多選)。
    A.    在Java中,文件的輸入輸出功能是經過流來實現的
    B.    若是要把數據寫入到一個文件中,須要建立一個輸入流對象
    C.    字符流在某些方面好比漢字的處理,比字節流更高效
    D.    能夠經過Reader r=new Reader("c:\\pet.txt")來建立一個輸入流對象

38) 給定以下Java代碼,實現文件複製功能,其中第(   )行代碼有錯誤。
public class TestIO {
    public static void main(String[] args) throws Exception {
        Reader fr = new FileReader("c:\\source.txt");
        Writer fw = new FileWriter("c:\\target.txt");
        char[] ch = new char[1024];
        int length = fr.read(ch);//第六行
        while (length != -1) {
            fw.write(ch);   //第八行
            length = fr.read(ch);
        }
        if (null != fr)
            fr.close(); //第十三行
        if (null != fw)
            fw.close();
    }
}
    A.    沒有錯誤
    B.    六
    C.    八
    D.    十三

39)給定下面的類定義
public class Upton{
public static void main(String argv[]){
}

//Here
}
下面哪個在替換//Here後是合法的(多選)?
A.    public int amethod(int z){}
B.    public int amethod(int i,int j){return 99;}
C.    protected void amethod(long l){ }
D.    private void anothermethod(){}

40)給定下面的類定義
class Base{
public void amethod(){
System.out.println("Base");
}
}
public class Hay extends Base{
public static void main(String argv[]){
Hay h = new Hay();
h.amethod();
}
下面在類Hay中的哪個方法將會編譯並使程序打印出字符串"Hay"?
A.    public int amethod(){ System.out.println("Hay");}
B.    public void amethod(long l){ System.out.println("Hay");}
C.    public void amethod(){ System.out.println("Hay");}
D.    public void amethod(void){ System.out.println("Hay");}

41)給定下面的類定義
public class ShrubHill{
    public void foregate(String sName){}
//Here
}
下面的哪個方法能夠合法的直接替換//Here(多選)?
A.    public int foregate(String sName){}
B.    public void foregate(StringBuffer sName){}
C.    public void foreGate(String sName){}
D.    private void foregate(String sType){}

42)  給定下面的類定義
class Base{
Base(int i){}
}
class DefCon extends Base{
DefCon(int i){
//XX
}
}
若是將標記//XX的地方替換爲下面的行,哪一行是獨立合法的?
A.    super();
B.    this();
C.    this(99);
D.    super(99);

43)給定下面的類
public class Crowle{
public static void main(String argv[]){
Crowle c = new Crowle();
}
Crowle(){
System.out.println("Greetings from Crowle");
}
}
構造方法會返回哪種數據類型?
A.    null
B.    integer
C.    String
D.    no datatype is returned

44)當你試着編譯運行下面的代碼的時候,可能會發生什麼?
public class Crowle{
public static void main(String argv[]){
Crowle c = new Crowle();
}
void Crowle(){
System.out.println("Greetings from Crowle");
}
}
A.    輸出 "Greetings from Crowle"
B.    系統報錯
C.    輸出 "void"
D.    沒有輸出

45)當你試着編譯運行下面的類的時候,可能會發生什麼?
class Base{
Base(int i){
System.out.println("Base");
}
}
class Severn extends Base{
public static void main(String argv[]){
Severn s = new Severn();
}
void Severn(){
System.out.println("Severn");
}
}
A.    編譯完成並運行時輸出字符串"Severn"
B.    編譯錯誤
C.    編譯完成但運行時沒有輸出
D.    編譯完成並運行時輸出字符串"Base"

46)怎樣經過一個語句改變數組大小同時保持原值不變?
A.    使用Array類的setSize()方法
B.    使用Util.setSize(int iNewSize)
C.    使用 size() 操做
D.    以上沒有一個是對的。

47)你想用下面的代碼查找數組最後一個元素的值,當你編譯並運行它的時候,會發生什麼?
  public class MyAr{
      public static void main(String argv[]){
        int[]i = new int[5];
        System.out.println(i[5]);
      }
  }
A.    編譯完成並輸出 0
B.    編譯完成並輸出null
C.    編譯完成但運行時異常
D.    編譯錯誤

48)做爲一個好的Java程序員,你已忘記了曾經在C/C++中知道的關於數組大小信息的知識。若是你想遍歷一個數組並中止在最後一個元素處。你會使用下面的哪個?
A.    myarray.length();
B.    myarray.length;
C.    myarray.size
D.    myarray.size();

49)你的老闆爲了你寫出了HelloWorld而很高興地爲你升職了,如今她給你分配了一個新任務,去作一個踢踏舞遊戲(或者我小時候玩的曲棍球遊戲)。你認爲你須要一個多維數組,下面哪個能作這個工做?
A.    int i =new int[3][3];
B.    int[] i =new int[3][3];
C.    int[][] i   =new int[3][3];
D.    int i[3][3]=new int[][];

50)你但願找到一個更優雅的方式給你的數組賦值而不使用for 循環語句,下面的哪個能作到?
A.     myArray{
        [1]="One";
        [2]="Two";
        [3]="Three";
        }
B.    String s[5]=new String[]{"Zero","One","Two","Three","Four"};
C.    String s[]=new String[]{"Zero","One","Two","Three","Four"};
D.    String s[]=new String[]={"Zero","One","Two","Three","Four"};

#答案:
1.D 2.CD 3.AC 4.D 5.C 6.D 7.C 8.B 9.D10.B
11.A 12.A 13.B 14.C 15.B 16.AC 17.B 18.B 19.C 20.AD
21.D 22.C 23.D 24.AB 25.AB 26.C 27.D 28.C 29.D 30.D
31.A 32.B 33.C 34.C 35.BCD 36.C 37.AC 38.A 39.BCD40.C
41.BC 42.D 43.D 44.D 45.B 46.D 47.C 48.B 49.C 50.C




算法

相關文章
相關標籤/搜索