選擇題(共50題,每題1.5分,共75分。多選題選不全或選錯都不得分。)1. 以下屬于面向對象的特征的是(C,D)。(兩項)A) 重載B) 重寫C) 封裝D) 繼承2. 以下代碼運行輸出是(C)public class Person{PRivate String name=”Person”;int age=0;}public class Child extends Person{public String grade;public static void main(String[] args){Person p = new Child();System.out.println(p.name);}}A) 輸出:PersonB) 沒有輸出C) 編譯出錯D) 運行出錯3. 在使用super 和this關鍵字時,以下描述正確的是(A)A) 在子類構造方法中使用super()顯示調用父類的構造方法,super()必須寫在子類構造方法的第一行,否則編譯不通過B) super()和this()不一定要放在構造方法內第一行C) this()和super()可以同時出現在一個構造函數中D) this()和super()可以在static環境中使用,包括static方法和static語句塊4. 以下對封裝的描述正確的是(D)A) 只能對一個類中的方法進行封裝,不能對屬性進行封裝B) 如果子類繼承了父類,對于父類中進行封裝的方法,子類仍然可以直接調用C) 封裝的意義不大,因此在編碼時盡量不要使用D) 封裝的主要作用在于對外隱藏內部實現細節,增強程序的安全性5. 以下對繼承的描述錯誤的是(A)A)Java中的繼承允許一個子類繼承多個父類B) 父類更具有通用性,子類更具體C)Java中的繼承存在著傳遞性D) 當實例化子類時會遞歸調用父類中的構造方法6. 以下程序的運行結果是(D)class Person{public Person(){System.out.println(“this is a Person”);}}public class Teacher extends Person{private String name=”tom”;public Teacher(){System.out.println(“this is a teacher”);super();}public static void main(String[] args){Teacher teacher = new Teacher();System.out.println(this.name);}}A) this is a Personthis is a teachertomB) this is a teacherthis is a PersontomC) 運行出錯D) 編譯有兩處錯誤7. 以下說法錯誤的是()A) super.方法()可以調用父類的所有非私有方法B) super()可以調用父類的所有非私有構造函數C) super.屬性可以調用父類的所有非私有屬性D) this和super關鍵字可以出現在同一個構造函數中8. 以下關于final關鍵字說法錯誤的是(A,C)(兩項)A) final是java中的修飾符,可以修飾類、接口、抽象類、方法和屬性B) final修飾的類肯定不能被繼承C) final修飾的方法不能被重載D) final修飾的變量不允許被再次賦值9. 訪問修飾符作用范圍由大到小是(D)A) private-default-protected-publicB) public-default-protected-privateC) private-protected-default-publicD) public-protected-default-private10. 以下(D)不是Object類的方法A) clone()B) finalize()C) toString()D) hasNext()11. 多態的表現形式有(A)A) 重寫B) 抽象C) 繼承D) 封裝12. 以下對重載描述錯誤的是(B)A) 方法重載只能發生在一個類的內部B) 構造方法不能重載C) 重載要求方法名相同,參數列表不同D) 方法的返回值類型不是區分方法重載的條件13. 以下(D)添加到ComputerBook中不會出錯class Book{protected int getPrice(){return 30;}}public class ComputerBook extends Book{}A) protected float getPrice(){}B) protected int getPrice(int page){}C) int getPrice(){}D) public int getPrice(){return 10;}14. 以下對抽象類的描述正確的是(C)A) 抽象類沒有構造方法B) 抽象類必須提供抽象方法C) 有抽象方法的類一定是抽象類D) 抽象類可以通過new關鍵字直接實例化15. 以下對接口描述錯誤的有(D)A) 接口沒有提供構造方法B) 接口中的方法默認使用public、abstract修飾C) 接口中的屬性默認使用public、static、final修飾D) 接口不允許多繼承16. 以下代碼,描述正確的有(A)interface IDemo{public static final String name;1void print();2public void getInfo();3}abstract class Person implements IDemo{4public void print(){}}A) 第1行錯誤,沒有給變量賦值B) 第2行錯誤,方法沒有修飾符C) 第4行錯誤,沒有實現接口的全部方法D) 第3行錯誤,沒有方法的實現17. 接口和抽象類描述正確的有(B,C)(兩項)A) 抽象類沒有構造函數B) 接口沒有構造函數C) 抽象類不允許多繼承D) 接口中的方法可以有方法體18. 以下描述錯誤的有(C)A) abstract 可以修飾類、接口、方法B) abstract修飾的類主要用于被繼承C) abstract 可以修飾變量D) abstract修飾的類,其子類也可以是abstract修飾的19. 以下描述正確的有(B)A) 方法的重寫應用在一個類的內部B) 方法的重載與返回值類型無關C) 構造方法不能重載D) 構造方法可以重寫20. 以下程序運行結果是(A)public class Test extends Father{private String name=”test”;public static void main(String[] args){Test test = new Test();System.out.println(test.getName());}}class Father{private String name=”father”;public String getName() {return name;}}A) fatherB) testC) 編譯出錯D) 運行出錯,無輸出21. 以下對異常的描述不正確的有(C)A) 異常分為Error和ExceptionB) Throwable是所有異常類的父類C) Exception是所有異常類父類D) Exception包括RuntimeException和RuntimeException之外的異常22. 在try-catch-finally語句塊中,以下可以單獨與finally一起使用的是(B)A) catchB) tryC) throwsD) throw23. 下面代碼運行結果是(B)public class Demo{public int add(int a,int b){try{return a+b;}catch(Exception e){System.out.println(“catch 語句塊”);}finally{System.out.println(“finally 語句塊”);}return 0;}public static void main(String[] args){Demo demo = new Demo();System.out.println(“和是:”+demo.add(9,34));}}A) 編譯異常B) finally語句塊 和是:43C) 和是:43 finally語句塊D) catch語句塊 和是:4324. 以下描述不正確的有(D)A) try塊不可以省略B) 可以使用多重catch塊C) finally塊可以省略D) catch塊和finally塊可以同時省略25. 以下對自定義異常描述正確的是(C)A) 自定義異常必須繼承ExceptionB) 自定義異常可以繼承自ErrorC) 自定義異常可以更加明確定位異常出錯的位置和給出詳細出錯信息D) 程序中已經提供了豐富的異常類,使用自定義異常沒有意義26. 以下程序運行結果是(D)public class Test {public int div(int a, int b) {try {return a / b;}catch(Exception e){System.out.println(“Exception”);}catch(NullPointerException e){System.out.println(“ArithmeticException”);}catch (ArithmeticException e) {System.out.println(“ArithmeticException”);} finally {System.out.println(“finally”);}return 0;}public static void main(String[] args) {Test demo = new Test();System.out.println(“商是:” + demo.div(9, 0));}}A) Exception finally 商是:0B) ArithmeticException finally 商是:0C) finally商是:0D) 編譯報錯27. 以下對TCP和UDP描述正確的是(D)A) TCP不能提供數據的可靠性B) UDP能夠保證數據庫的可靠性C) TCP數據傳輸效率高于UDPD) UDP數據傳輸效率高于TCP28. 在Java中,下面對于構造函數的描述正確的是(D)。(選擇一項)A) 類必須顯示定義構造函數B) 構造函數的返回類型是voidC) 構造函數和類有相同的名稱,并且不能帶任何參數D) 一個類可以定義多個構造函數29. 根據下面的代碼,String s = null;會拋出NullPointerException異常的有(A,C)。[兩項]A) if( (s!=null) & (s.length()>0) )B) if( (s!=null) & & (s.length()>0) )C) if( (s==null) | (s.length()==0) )D) if( (s==null) || (s.length()==0) )30. .在Java中,關于HashMap類的描述,以下廉潔錯誤的是( B )。A) HashMap使用鍵/值得形式保存數據B) HashMap 能夠保證其中元素的順序C) HashMap允許將null用作鍵D) HashMap允許將null用作值31. 下列選項中關于java中super關鍵字的說法錯誤的是( B )A) super關鍵字是在子類對象內部指代其父類對象的引用B) super關鍵字不僅可以指代子類的直接父類,還可以指代父類的父類C) 子類可以通過super關鍵字調用父類的方法D) 子類可以通過super關鍵字調用父類的屬性32. 在Java中,以下代碼( A )正確地創建了一個InputStreamReader對象。A) InuptStreamReader(new FileInputStream(“1.dat”));B) InuptStreamReader(new FileReader(“1.dat”));C) InuptStreamReader(new BufferReader(“1.dat”));D) InuptStreamReader (“1.dat”);33. 在Java中,( D )類提供定位本地文件系統,對文件或目錄及其屬性進行基本操作。A) FileInputStreamB) FileReaderC) FileWriterD) File34.Java中的集合類包括ArrayList、LinkedList、HashMap等類,下列關于集合類描述錯誤的是(C)(選擇一項)A) ArrayList和LinkedList均實現了List接口B) ArrayList的訪問速度比LinkedList快C) 添加和刪除元素時,ArrayList的表現更佳D) HashMap實現Map接口,它允許任何類型的鍵和值對象,并允許將null用作鍵或值35. 在Java中開發JDBC應用程序時,使用DriverManager類的getConnection()方法建立與數據源的連接語句為:Connection con = DriverManager.getConnection(“jdbc:odbc:news”);URL連接中的”n ews”表示的是(C)(選擇一項)A) 數據庫中表的名稱B) 數據庫服務器的機器名C) 數據源的名稱D) 用戶名36. 在Java中,JDBCAPI定義了一組用于與數據庫進行通信的接口和類,它們包括在(B)包中。A) java.langB) java.sqlC) java.utilD) java.math37.Java中,以下( B )接口以鍵_值對的方式存儲對象。A) java.util.CollectionB) java.util.MapC) java.util.ListD) java.util.Set38. 以下關于對象序列化描述正確的是( C,D )[兩項]A) 使用FileOutputStream可以將對象進行傳輸B) 使用PrintWriter可以將對象進行傳輸C) 使用ObjectOutputStream類完成對象存儲,使用ObjectInputStream類完成對象讀取D) 對象序列化的所屬類需要實現Serializable接口39. 在Java中,( A )類可用于創建鏈表數據結構的對象。A) LinkedListB) ArrayListC) CollectionD) HashMap40. 分析下面這段Java代碼,它的運行結果是( C )。Import java.io.*;Public class B{Public static void main(string [] args){int i=12;System.out.println(i+=i-=i*=i);}}A) 100B) 0C) -120D) 程序無法編譯41. 使用JDBC事務的步驟是(C,A,B,D)(多選)A) 取消Connection的事務自動提交方式B) 發生異常回滾事務C) 獲取Connection對象D) 操作完畢提交事務42. 以下對JDBC事務描述錯誤的是( B )A) JDBC事務屬于JAVA事務的一種B) JDBC事務屬于容器事務類型C) JDBC事務可以保證操作的完整性和一致性D) JDBC事務是由Connection發起的,并由Connection控制43. 要通過可滾動的結果集更新數據,以下正確的是(AA) pst=con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE)B) pst=con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY)C) pst=con.prepareStatement(sql, Resu ltSet.TYPE_SCROLL_SENSITIVE)D) pst=con.prepareStatement(sql, ResultSet.CONCUR_UPDATABLE)44. 存儲過程pro有兩個參數,第一個為輸入參數,第二個為輸出參數,以下代碼正確的是(C)A) CallableStatement cst=con.prepareCall(“(call pro(?,?))”);B) CallableStatement cst=con.prepareCall(“(call pro(?))”);C) CallableStatement cst=con.prepareCall(“{call pro(?,?)}”);D) CallableStatement cst=con.prepareCall(“{call pro(?,?,?)}”);45. 以下描述正確的是(B)A) CallableStatement是PreparedStatement的父接口B) PreparedStatement是CallableStatement的父接口C) CallableStatement是Statement的子接口D) PreparedStatement是Statement的父接口46. 要刪除book表中書籍(bookName)是”java”的記錄,以下代碼正確的是(AString sql=”delete from book where bookName=?”;PreparedStatement pst=con.preparedStatement(sql);______________________________pst.execute();A) pst.setString(1,”java”);B) pst.setString(0,”java”);C) pst.setInt(0,”java”);D) 以上選項都不正確47. 獲取ResutlSet對象rst的第一行數據,以下正確的是(B)A) rst.hashNext();B) rst.next();C) rst.first();D) rst.nextRow();48. 以下可以正確獲取結果集的有(AD)(多選)A) Statement sta=con.createStatement();ResultSet rst=sta.executeQuery(“select * from book”);B) Statement sta=con.createStatement(“select * from book”);ResultSet rst=sta.executeQuery();C) PreparedStatement pst=con.preparedStatement();ResultSet rst=pst.executeQuery(“select * from book”);D) PreparedStatement pst=con.preparedStatement(“select * from book”);ResultSet rst=pst.executeQuery();49. 以下負責建立與數據庫連接的是(D)A) StatementB) PreparedStatementC) ResultSetD) DriverManager50. 使用JDBC連接數據庫的順序是(B,A,D,C,E)(多選)A) 加載驅動B) 導入驅動包C) 發送并處理SQL語句D) 建立于數據庫的連接E 關閉連接
二、簡答題(各5分,共25分)
1、在java中如果聲明一個類為final,表示什么意思?(不計分)
答:final是最終的意思,final可用于定義變量、方法和類但含義不同,聲明為final的類不能被繼承。
1、父類的構造方法是否可以被子類覆蓋(重寫)?
答:父類的構造方法不可以被子類覆蓋,因為父類和子類的類名是不可能一樣的。
2、請講述String和StringBuffer的區別。
答:String類所定義的對象是用于存放”長度固定”的字符串。
StringBuffer類所定義的對象是用于存放”長度可變動”的字符串。
3、如果有兩個類A、B(注意不是接口),你想同時使用這兩個類的功能,那么你會如何編寫這個C類呢?
答:因為類A、B不是接口,所以是不可以直接繼承的,但可以將A、B類定義成父子類,那么C類就能實現A、B類的功能了。假如A為B的父類,B為C的父類,此時C就能實現A、B的功能。
4、結合Java視頻Lesson5(多線程),分析sleep()和wait()方法的區別。
答:Sleeping睡眠的意思:sleep()方法用來暫時中止執行的線程。在睡眠后,線程將進入就緒狀態。
waiting等待的意思:如果調用了wait()方法,線程將處于等待狀態。用于在兩個或多個線程并發運行時。
5、談談你對抽象類和接口的理解。
答:定義抽象類的目的是提供可由其子類共享的一般形式、子類可以根據自身需要擴展抽象類、抽象類不能實例化、抽象方法沒有函數體、抽象方法必須在子類中給出具體實現。他使用extends來繼承。
接口:一個接口允許一個類從幾個接口繼承而來,Java程序一次只能繼承一個類但可以實現幾個接口,接口不能有任何具體的方法,接口也可用來定義可由類使用的一組常量。其實現方式是interface來實現。
新聞熱點
疑難解答