北郵《Java技術(shù)》期末復(fù)習(xí)題(含答案)_第1頁
北郵《Java技術(shù)》期末復(fù)習(xí)題(含答案)_第2頁
北郵《Java技術(shù)》期末復(fù)習(xí)題(含答案)_第3頁
北郵《Java技術(shù)》期末復(fù)習(xí)題(含答案)_第4頁
北郵《Java技術(shù)》期末復(fù)習(xí)題(含答案)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 綜合練習(xí)題 填空題1. Java 不僅僅是一種編程環(huán)境,它實(shí)際上是一個完整的計算平臺,包括完整的程序開發(fā)環(huán)境和運(yùn)行環(huán)境。2. 完整的Java體系結(jié)構(gòu)包括四個組件,分別是Java編程語言、Java類文件格式、Java應(yīng)用程序編程接口和Java虛擬機(jī)。3. Java運(yùn)行時環(huán)境是由Java虛擬機(jī)和核心類組合形成的。4. 在Java類文件中存儲的二進(jìn)制代碼稱為字節(jié)碼,它們是JVM的指令。5. 當(dāng)Java虛擬機(jī)是在主機(jī)操作系統(tǒng)上由軟件實(shí)現(xiàn)時,它實(shí)際上是用本地(如C/C+等)語言編寫的程序。6. Java虛擬機(jī)主要包括兩個模塊,一個是類裝載器,另一個是執(zhí)行引擎。7. 在面向?qū)ο笙到y(tǒng)中,對象是程序的基本組

2、成實(shí)體。8. 對象是程序的基本組成實(shí)體,類是創(chuàng)建對象的模板。9. Java 源程序中的類可以分為兩種,分別是系統(tǒng)類和用戶自己定義類。10. 編譯程序的時候會自動導(dǎo)入到程序中的系統(tǒng)包是java.lang。11. 把基本數(shù)據(jù)類型包裝成類包裝成類的好處是可以提供基本數(shù)據(jù)類型的信息,還可以使用類的方法對數(shù)據(jù)進(jìn)行操作。12. 在Java中,int類型的包裝類是Integer, char 類型的包裝類是Character。13. Integer 類的 parseInt( ) 方法的功能是把一個字符串轉(zhuǎn)換為一個整型數(shù)據(jù)。14. Java 把數(shù)據(jù)輸出到控制臺是使用System.out完成的。15. Scann

3、er 類是在java.util包中定義的。16. 創(chuàng)建一個連接到標(biāo)準(zhǔn)輸入流對象 System.in 的 Scanner 對象的語句是Scanner myScanner = new Scanner(System.in);。17. 設(shè) myS 是一個 Scanner 類的實(shí)例,則語句“int x = myS.nextInt();”的作用是讀取一個整數(shù),然后把這個整數(shù)賦給變量x。18. Java 提供的專門用于格式化輸出數(shù)據(jù)的方法是System.out.printf()。19. Java 提供的用于處理日期和時間信息的系統(tǒng)類是java.util.Date。20. 字符串常量是用雙引號括起來的字符序列

4、。21. Java用于處理處理字符串的類有兩個,分別是String類和StringBuffer類。22. Java的編譯器會為每個字符串常量生成一個String類的實(shí)例。23. 取得字符串的長度的方法是調(diào)用字符串對象的length()方法。24. 設(shè)有如下類定義1. class Person 2. private String name; 3. Person(String n) a) name = n;4. 5. ii. 則創(chuàng)建一個 Person 類對象的語句是Person p = new Person(Apple);。25. 在Java中,每當(dāng)創(chuàng)建一個對象時,系統(tǒng)都會從它管理的內(nèi)存中分配一定

5、的空間給這個對象。我們把創(chuàng)建好的對象叫做對象實(shí)體,而這個對象實(shí)體的“標(biāo)識”叫做對象的引用。26. 構(gòu)造方法有兩個作用,一個作用是提供要實(shí)例化的類的類名,另一個作用是把新創(chuàng)建的對象初始化。27. new運(yùn)算符用于創(chuàng)建對象,new運(yùn)算符被執(zhí)行之后會返回新創(chuàng)建對象的引用。28. 在聲明成員變量的時候,用關(guān)鍵字static修飾的變量是類變量,類變量也稱為靜態(tài)變量。29. 在聲明成員變量的時候,沒有被關(guān)鍵字static修飾的變量是實(shí)例變量。30. 在聲明成員方法的時候,用關(guān)鍵字static修飾的方法是類方法,類方法也稱為靜態(tài)方法。31. 在聲明成員方法的時候,沒有被關(guān)鍵字static修飾的方法是實(shí)例方法

6、。32. 調(diào)用類方法有兩種情況,一種是通過類名調(diào)用類方法,另一種是通過對象名調(diào)用類方法。33. 在面向?qū)ο蟮某绦蛑?,方法是用于定義對象的某個特定功能的代碼段。34. 方法名和方法的參數(shù)類型稱為方法的簽名。35. 調(diào)用方法的語句格式是reference.method(arguments)。36. 編譯源程序時,編譯器會為方法添加一個隱式參數(shù),用來存儲運(yùn)行時刻傳來的當(dāng)前對象的引用。37. 面向?qū)ο蠹夹g(shù)有三個基本特性,分別是封裝、繼承和多態(tài)。38. 包含在對象屬性中的數(shù)據(jù)值的集合通常稱為對象的狀態(tài)。39. 對象除了保存數(shù)據(jù)之外,還提供若干操作數(shù)據(jù)的方法,用以描述的對象的行為。40. 在 Java 中

7、,對象的本體是用對象的引用表示的。41. 封裝有兩方面的意思:一個方面是對象封裝了功能的內(nèi)部實(shí)現(xiàn)機(jī)制,另一個方面是對象封裝了它持有的數(shù)據(jù)。42. 在Java中,通過在類定義里面定義屬性和方法,強(qiáng)制實(shí)現(xiàn)對數(shù)據(jù)和功能的封裝。43. Java 程序中的所有類都由系統(tǒng)類Object直接繼承或間接繼承得到的。44. Java中的多態(tài)是指一個程序中同名的不同方法共存的情況。45. Java中的多態(tài)為編譯時多態(tài)和運(yùn)行時多態(tài)兩類。46. 對象的類型轉(zhuǎn)換分為upcasting和casting兩種。47. 所謂包就是Java語言提供的一種區(qū)別類名空間的機(jī)制,是一組相關(guān)的類和接口的集合。48. Java 中聲明包的

8、關(guān)鍵字是package,引用包中類或接口的關(guān)鍵字是import。49. Java中,打包就是將應(yīng)用程序所包含的類文件和其它資源文件放到一個歸檔文件當(dāng)中。50. JDK 提供的打包工具是jar。51. 使用接口實(shí)際上要做兩件事:第一是聲明接口(定義接口),第二是在類中實(shí)現(xiàn)接口。52. 回調(diào)是一種常見的程序設(shè)計模式,這種程序設(shè)計模式在Java中通常是用接口來實(shí)現(xiàn)。53. 所謂異常,就是程序的運(yùn)行時錯誤。54. “異常”產(chǎn)生時,意味著在當(dāng)前環(huán)境下無法獲得必要的信息來解決問題,我們所能做的就是從當(dāng)前環(huán)境中跳出,并且把問題提交給上一級別的環(huán)境。55. 我們把生成異常對象并把它交給運(yùn)行時系統(tǒng)的異常處理機(jī)制

9、的過程稱為拋出異常。56. 運(yùn)行時系統(tǒng)的異常處理機(jī)制在方法的調(diào)用棧中查找,從生成異常的方法開始回溯,直到找到包含相應(yīng)異常處理的方法為止,這個過程稱為捕獲異常。57. 編譯器要求我們編寫的程序必須對可檢測的異常進(jìn)行處理,否則不能通過編譯。58. 異常通常由以下兩種情況引起,一種是程序執(zhí)行了不合法的動作,另一種是通過執(zhí)行throw語句由程序顯式拋出。59. 按照數(shù)據(jù)的傳輸方向,流可以分為輸入流和輸出流兩類。60. 按照數(shù)據(jù)的格式,流可以分為字節(jié)流和字符流兩類。61. 系統(tǒng)類FileInputStream和FileOutputStream用于以字節(jié)方式處理文件的輸入和輸出,稱為文件輸入/輸出流。62

10、. 系統(tǒng)類FileReader和FileWriter用于以字符方式處理文件的輸入和輸出,稱為文件讀寫器。63. 系統(tǒng)類BufferedReader和BufferedWriter分別稱為緩沖讀取器和緩沖寫入器。64. 使用緩沖流的好處是可以減少系統(tǒng)和外部設(shè)備交換數(shù)據(jù)的次數(shù)。65. 系統(tǒng)類DataInputStream和DataOutputStream稱為數(shù)據(jù)輸入/輸出流,它們在輸入輸出數(shù)據(jù)的同時能對流中的數(shù)據(jù)進(jìn)行變換處理。66. 提供操作系統(tǒng)目錄管理功能的文件類是File。67. 用于文件的隨機(jī)讀寫操作的文件類是RandomAccessFile。68. C 語言程序員提供創(chuàng)建線程的機(jī)制是使用操作

11、系統(tǒng)提供的庫。69. 通俗地講,線程就是一個代碼執(zhí)行流。70. Java 程序是從一個眾所周知的入口點(diǎn)開始執(zhí)行的,即是從main()方法的第一條語句開始執(zhí)行的。71. 當(dāng) Java 程序啟動時,系統(tǒng)就為它創(chuàng)建好一個線程,用這個線程執(zhí)行 main() 方法中的代碼序列。這個系統(tǒng)創(chuàng)建好的線程叫主線程。72. JVM 創(chuàng)建的線程稱為系統(tǒng)線程,我們自己在程序中用代碼創(chuàng)建的線程稱為用戶線程。73. Java API 提供創(chuàng)建線程的系統(tǒng)類是Thread, 它的對象就是一個線程。74. 線程類的獲取當(dāng)前線程對象引用的方法是currentThread(),獲取當(dāng)前線程名字的方法是getName()。75. 在

12、 Java 中,線程被表示為Java.lang.Thread類的一個實(shí)例。76. 一個線程要完成一個應(yīng)用任務(wù),為了完成該應(yīng)用任務(wù)而編寫的代碼要放到run()方法中。77. 創(chuàng)建好線程對象之后并不意味著這個線程就會被處理機(jī)(JMV)運(yùn)行,還需要調(diào)用線程對象的start()方法啟動線程。78. 我們稱實(shí)現(xiàn)了Runnable接口的類為線程化的類,稱實(shí)現(xiàn)了該接口的類的實(shí)例為可運(yùn)行的對象。79. 從實(shí)現(xiàn)了 Runnable 接口的對象創(chuàng)建線程對象的方法是,建立一個單獨(dú)的 Thread 對象,并把可運(yùn)行對象傳遞給專門的 Thread 類的構(gòu)造方法。80. 線程生命周期共有五個狀態(tài),分別是新建狀態(tài)、就緒狀態(tài)

13、、運(yùn)行狀態(tài)、阻塞狀態(tài)和死亡狀態(tài)。81. Java 的線程調(diào)度策略采用搶占式調(diào)度。82. 使用 Swing 編寫程序的圖形界面要引入兩個程序包,其中包含 Swing 的基本類的程序包是java.swing,包含與處理事件相關(guān)的接口和類的程序包是java.awt.event。83. 使用布局管理器要引入java.awt包。84. 事件監(jiān)聽者必須實(shí)現(xiàn)與事件類型相對應(yīng)的事件監(jiān)聽接口才具有處理那類事件的能力。85. Java有三種窗口,分別是Applet 窗口、 框架窗口(JFrame)和無邊框的窗口(JWindow)。86. 設(shè) mw 是一個 JFrame 窗口,取得 mw 的內(nèi)容面板的語句是mw.g

14、etContentPane()。87. 要獲取事件 e 的命令字符串,從而知道是哪一個組件激發(fā)的事件,則應(yīng)該使用的代碼是e.getActionCommand()。88. 面板有兩種,分別是普通面板 JPanel 和滾動面板 JScrollPane。89. 布局管理器是實(shí)現(xiàn)了LayoutManager接口的類。90. 小應(yīng)用程序和面板默認(rèn)的布局管理器是FlowLayout。91. JWindow 、 JFrame 和 JDialog 默認(rèn)的布局管理器是BorderLayout。92. 空布局就是把一個容器的布局管理器設(shè)置為null布局。93. 當(dāng)把一個容器的布局管理器設(shè)置為 null 布局的時候

15、,可以使用setBounds()方法手工設(shè)置組件本身的大小和組件在容器中的位置。94. 菜單分為下拉式菜單和彈出式菜單兩種。95. 處理菜單項事件的接口是ActionListener,要實(shí)現(xiàn)的接口方法是actionPerformed(),獲得事件源的方法是getSource()。96. 在 Swing 中,有兩個對話框類,一個是JDialog類,它提供構(gòu)造并管理通用對話框功能;另一個是JOptionPane類,它提供構(gòu)造常見對話框功能。 97. 滾動條對象的事件處理事件類型是AdjustmentEvents,要實(shí)現(xiàn)的事件監(jiān)聽接口的方法是adjustmentValueChanaged(),注冊事

16、件監(jiān)聽器的方法是addAdjustmentListener(),獲取事件源對象的方法是getAdjustable()。98. Java 處理鼠標(biāo)事件提供了兩個接口,分別是MouseListener 接口和MouseMotionListener 接口。99. Java 程序連接數(shù)據(jù)庫的方法有兩種:一種是使用 JDBC ODBC 橋連接器與數(shù)據(jù)庫連接,另一種是使用 JDBC 驅(qū)動程序與數(shù)據(jù)庫連接。100. Java 提供數(shù)據(jù)庫編程的API包是java.sql。101. DriverManage 類的getConnection()方法用于建立數(shù)據(jù)庫連接。102. java.sql 包中用于處理特定數(shù)

17、據(jù)庫連接的類是Connection 類。103. java.sql 包中用于在指定的連接中處理 SQL 語句的類是Statement 類。104. java.sql 包中用于管理查詢結(jié)果集的類是ResultSet 類。105. Statement類的用于執(zhí)行SQL語句的方法是executeUpdate()。單項選擇題1. Java程序的最基本的組成元素是(C)。(C)對象2. 下列哪種類成員修飾符修飾的變量只能在本類中被訪問?(D)(D)private3. 在Java語言中,哪一個包中的類是自動導(dǎo)入的?(A)(A)java.lang4. 有一個類B,下面為其構(gòu)造方法的聲明,正確的是(B)(B)

18、B(int x) 5. 下面關(guān)于類的說法,不正確的是(C)。(C)類就是對象6. 有如下代碼段class COuter int x = 10;void showA() System.out.println(x);void print() showB();class CInner int x = 20;void showB() System.out.println(x);則下面說法正確的是(B)。(B)這段程序有錯,原因是外部類直接使用了內(nèi)部類的成員,而這是不對的 7. Java語言中,類之間的繼承關(guān)系是(A)。(A)單繼承8. 在Java中,所有類的根類是(A)。 (A)java.lang.O

19、bject9. 如果局部變量和成員變量同名,如何在局部變量作用域內(nèi)引用成員變量?(B)(B)在成員變量前加this,使用this訪問該成員變量10. 在使用interface聲明一個接口時,只可以使用下述哪個修飾符修飾該接口?(D)(D)public11. 下面關(guān)于接口敘述正確的是(A)。(A)實(shí)現(xiàn)一個接口必須實(shí)現(xiàn)接口的所有方法12. 下面說法不正確的是(B)(B)abstract和final能同時修飾一個類13. 自定義異常時,可以通過對下列哪一項進(jìn)行繼承?(C)(C)Exception類及其子類14. 以下關(guān)于java異常說法不正確的是(D)(D)以上說法都不對15. 運(yùn)行下面程序時,會產(chǎn)

20、生什么異常?(A)(A)ArithmeticExceptionpublic class X7_1_4 public static void main(String args) int x = 0;int y = 5/x;int z = 1,2,3,4;int p = z4; 16. Java提供處理不同類型流的類的API包是(D)(D)java.io17. 下列流中哪一個使用了緩沖區(qū)技術(shù)?(A)(A)BufferedOutputStream18. 能讀入字節(jié)數(shù)據(jù)進(jìn)行Java基本數(shù)據(jù)類型判斷過慮的類是(C)。(C)DataInputStream19. 下列哪一個import命令可以允許我們在程序

21、中創(chuàng)建輸入/輸出流對象?(C)(C)import java.io.*;20. 如果需要從文件中讀取數(shù)據(jù),則可以在程序中創(chuàng)建哪一個類的對象?(A)(A)FileInputStream21. 下列流中哪個不屬于字節(jié)流?(D)。(D)InputStreamReader22. 下列說法中,正確的一項是(A)。(A)單處理機(jī)的計算機(jī)上,2個線程實(shí)際上不能并發(fā)執(zhí)行23. 下列說法中,錯誤的一項是(A)。(A)線程就是程序24. 下列說法中,錯誤的一項是(A)。(A)線程一旦創(chuàng)建,則立即自動執(zhí)行25. Thread類定義在下列哪個包中?(B)(B)java.lang26. 下列哪個方法可以將MenuBar加

22、入Frame中(D)?(D)setMenuBar()27. 當(dāng)單擊鼠標(biāo)或拖動鼠標(biāo)時,觸發(fā)的事件是(D)。(D)MouseEvent28. 下列哪一項不屬于Swing的頂層組件(C)?(C)JTree29. 下列說法中錯誤的是(B)。(B)JFrame的對象實(shí)例化后,沒有大小,但是可以看到30. 聲明并創(chuàng)建一個按鈕對象b,應(yīng)該使用的語句是(A)。(A)Button b=new Button();31. 下列說法中錯誤的是(D)。(D)一個類只能實(shí)現(xiàn)一個監(jiān)聽器接口32. 如果容器組件p的布局是BorderLayout,則在p的下邊中添加一個按鈕b,應(yīng)該使用的語句是(C)。(C)p.add(b,So

23、uth);33. Java中,JDBC是指(A)。(A)Java程序與數(shù)據(jù)庫連接的一種機(jī)制34. JDBC的模型對開放數(shù)據(jù)庫連接(ODBC)進(jìn)行了改進(jìn),它包含(D)。(D)以上全部都是35. JDBC中要顯式地關(guān)閉連接的命令是(A)。(A)Connection.close()簡答題1. 什么是 Java 虛擬機(jī)?它的主要功能是什么?答:JVM 是在一臺計算機(jī)上由軟件模擬,也可用硬件實(shí)現(xiàn)的假想的計算機(jī),它定義了指令集(相當(dāng)于中央處理器 CPU)、寄存器、類文件結(jié)構(gòu)棧、垃圾收集堆、內(nèi)存區(qū)域等。JVM 是執(zhí)行 Java 程序的引擎。Java 程序編譯后得到的二進(jìn)制形式的字節(jié)碼實(shí)際上就是JVM指令。2

24、. 常用的常用系統(tǒng)包有哪些?它們各自的主要功能是什么?答: Java API 包 功能 java.applet 提供對通用 Applet 的支持,是所有 Applet 的基類 java.awt 提供組建標(biāo)準(zhǔn)圖形用戶界面(GUI)的系統(tǒng)類。包含了眾多的圖形組件、方法和事件 java.lang 包含 Java 語言的核心類庫 實(shí)現(xiàn) Java 網(wǎng)絡(luò)功能的類庫 java.io 包含輸入輸出類 java.security 支持 Java 程序安全性 java.util 提供各種實(shí)用工具類3. 類變量和實(shí)例變量有哪些不同?答:在定義成員變量時,如果用static修飾符修飾,則該變量是類變量(也稱“靜態(tài)變量

25、”),否則是實(shí)例變量。類變量不屬于類的任何一個具體對象。它保存在類的內(nèi)存區(qū)域的公共存儲單元。類的任何一個對象對類變量的存取都是對同一個內(nèi)存單元進(jìn)行操作。與類變量相對,實(shí)例變量屬于類的某個具體的對象。它在類的每個對象的內(nèi)存區(qū)域中都保存一份。類的任何一個對象對實(shí)例變量的存取都是對自己內(nèi)存區(qū)域內(nèi)保存的實(shí)例變量的副本進(jìn)行操作。4. 類方法和實(shí)例方法有哪些不同?答:類方法不針對特定的對象,所以在沒有創(chuàng)建對象之前可以執(zhí)行。但是在類方法中只能訪問類變量和類方法,而不能訪問實(shí)例變量和實(shí)例方法。實(shí)例方法則只能針對特定的對象執(zhí)行,因此,如果任何對象都不存在,則也就沒有可以執(zhí)行的實(shí)例方法。另外,盡管實(shí)例方法專用于類

26、中的對象,但在內(nèi)存中也只有一份實(shí)例方法,供類中的所有對象共享。因為為每個對象都復(fù)制一份實(shí)例方法的代價太大了。系統(tǒng)中有一種專門機(jī)制來保證:每當(dāng)通過對象調(diào)用一個實(shí)例方法時,代碼都按照專用于某個對象的方式運(yùn)行。5. 什么是多態(tài)? Java 的編譯時多態(tài)和運(yùn)行時多態(tài)有什么區(qū)別?答:Java中的多態(tài)就是指一個程序中同名的不同方法共存的情況。分為編譯時多態(tài)和運(yùn)行時多態(tài)兩類。方法重載可以實(shí)現(xiàn)Java的編譯時多態(tài)。它是在相同類內(nèi),定義名稱相同,但參數(shù)個數(shù)或參數(shù)類型不同的方法。編譯器會根據(jù)實(shí)參的個數(shù)和類型,確定調(diào)用哪個方法。所謂編譯時多態(tài),是指程序會根據(jù)參數(shù)的不同來調(diào)用相應(yīng)的方法。具體調(diào)用哪個被重載的方法,是由

27、編譯器在編譯階段決定的。所以編譯時多態(tài)也叫做靜態(tài)多態(tài)性。方法覆蓋可以實(shí)現(xiàn)Java的運(yùn)行時多態(tài)。它是在子類當(dāng)中,定義名稱、參數(shù)個數(shù)與類型均與父類相同的方法,用以改寫父類方法的功能。運(yùn)行時多態(tài)是一種在運(yùn)行時,而不是在編譯時調(diào)用覆蓋方法的一種機(jī)制。對于覆蓋的方法,Java運(yùn)行時系統(tǒng)根據(jù)調(diào)用該方法的實(shí)例的類型,來決定選擇哪個方法調(diào)用。6. 什么是包?包的作用有哪些?答:所謂包就是Java語言提供的一種區(qū)別類名空間的機(jī)制,是一組相關(guān)的類和接口的集合。包有以下作用:(1)有效解決了類名沖突問題。當(dāng)聲明的類很多時,類名沖突的可能性很大,引入包后,只要一個包中的類名不沖突就可以,不同包中的類名可以相同。(2)

28、包體現(xiàn)了Java語言面向?qū)ο筇匦灾械姆庋b機(jī)制。包將java語言的類和接口有機(jī)地組織成層次結(jié)構(gòu),這個層次結(jié)構(gòu)與我們平常使用電腦時見到的具體的文件系統(tǒng)的目錄樹結(jié)構(gòu)層次一致。(3)包還可以控制類之間的訪問。類之間的訪問控制是通過類修飾符來實(shí)現(xiàn)的,若類聲明修飾符public,則表明該類不僅可供同一包中的類訪問,也可以被其它包中的類訪問。若類聲明無修飾符,則表明該類僅供同一包中的類訪問。 7. 如何在程序中引入其它包中的代碼?答:將類組織成包的目的是為了更好地利用包中的類。通常一個類只能引用與它在同一個包中的類。如果需要使用其它包中的public類,則可以使用如下的幾種方法。(1)在引入的類前加包名。對

29、于同一包中的其它類可直接引用;對于不同包中的其它類引用時需在類名前加包名。(2)用import關(guān)鍵字加載需要使用的類。利用import關(guān)鍵字加載需要使用的類當(dāng)前程序中,這樣在程序中引用這個類的地方就不需要再使用包名作為前綴。(3)上面的方法利用import語句加載了其他包中的一個類。若希望引入整個包也可以直接利用import語句。例如,語句import shape.*; 該語句的作用是把shape包中的所有類加載到當(dāng)前程序中。與加載單個類相同,加載整個包后,凡是用這個包中的類,都不需要再使用包名前綴。8. 什么是接口?它的作用是什么?答:在 Java 中,接口不是類,而是一組抽象方法和常量的集

30、合,用來描述類應(yīng)該提供什么樣的功能。在接口中定義的方法僅僅給出方法名稱、參數(shù)列表、返回值類型等信息的說明,并不給出方法體的具體代碼,即沒有給出方法功能的具體實(shí)現(xiàn)。在程序中定義了一個接口以后,就可以聲明某些類實(shí)現(xiàn)了這個接口,在實(shí)現(xiàn)了該接口的類中再給出接口的方法的功能代碼。這相當(dāng)于用接口規(guī)范了實(shí)現(xiàn)接口的那些類都必須以特定的形式提供一組特定的功能。反過來,實(shí)現(xiàn)某個接口的類必須提供該接口規(guī)定的功能,并且要遵從接口中定義的方法的格式約定。9. 什么是內(nèi)部類?使用內(nèi)部類有什么好處? 答:可以將一個類的定義放在另一個類的內(nèi)部。定義在另一個類內(nèi)部的類就是內(nèi)部類。內(nèi)部類允許我們把一些邏輯相關(guān)的類組織在一起,并控

31、制在內(nèi)部的類的訪問特性。內(nèi)部類的對象持有一個隱式引用,它引用了實(shí)例化該內(nèi)部對象的外圍類對象。通過這個引用,可以訪問外圍類對象的全部狀態(tài)。10. 什么是異常? Java 處理異常的方法是什么?答:所謂異常,就是程序的運(yùn)行時錯誤。Java通過面向?qū)ο蟮姆椒▉硖幚懋惓?。在一個方法的運(yùn)行過程中,如果發(fā)生了一個異常,則 Java 虛擬機(jī)會如同創(chuàng)建其它對象一樣,使用 new 在堆上創(chuàng)建異常對象。然后,當(dāng)前的執(zhí)行流程被終止,并且從當(dāng)前環(huán)境中彈出異常對象的引用。此時, Java 的異常處理機(jī)制接管程序,并開始尋找一個恰當(dāng)?shù)牡牡胤絹砝^續(xù)執(zhí)行程序。這個恰當(dāng)?shù)牡胤骄褪恰爱惓L幚沓绦颉?,它的任?wù)是將程序從錯誤狀態(tài)中恢

32、復(fù)或者做一些簡單地處理后結(jié)束程序。11. 在編寫程序時如何在拋出異常的方法內(nèi)部處理異常?答:使用try catch finally 代碼塊監(jiān)視和處理異常。如果 try 語句的代碼引發(fā)(拋出)的異常與后面某個catch語句的參數(shù)的類型匹配,則用該catch語句塊中的代碼處理該異常。如果不匹配就往后找有沒有其它的 catch 語句的異常參數(shù)類型匹配。如果所有的 catch 語句的異常類型與 try 語句代碼段實(shí)際產(chǎn)生的異常都不匹配,則執(zhí)行 finally 語句的代碼。另外, try 語句的代碼段在執(zhí)行過程中也有可能不產(chǎn)生異常,此時不管有沒有異常產(chǎn)生, try 語句的代碼段執(zhí)行完了之后都會執(zhí)行 fi

33、nally 語句的代碼段。try catch finally 代碼塊全部執(zhí)行結(jié)束之后,如果中間沒有出現(xiàn)任何控制轉(zhuǎn)移,程序?qū)⒃?catch 或 finally 之后繼續(xù)執(zhí)行。12. 在編寫程序時如何把異常交給方法調(diào)用者去處理? 答:可以在產(chǎn)生異常的方法內(nèi)部自己處理異常,也可以不自己處理,而是簡單的聲明自己可能會拋出哪些類型的異常,如果方法代碼執(zhí)行過程中真的產(chǎn)生異常了,那么就讓方法調(diào)用者去處理。方法是在方法聲明中使用 throws 短語聲明該方法可能會拋出哪種類型的異常。13. 簡述異常的傳播途徑。 答:在“try catch finally”結(jié)構(gòu)中,如果沒有一個 catch 子句能夠匹配已經(jīng)產(chǎn)生

34、的異常,則執(zhí)行 finally 子句(如果存在)。此時,如果仍然沒有程序能夠處理這個異常,好像發(fā)出異常的語句根本沒有嵌套在 try 語句中,控制流程將會立即離開當(dāng)前方法,過早地返回調(diào)用當(dāng)前方法的方法中。如果這個調(diào)用語句處于某一個 try 語句范圍之內(nèi),則將開始執(zhí)行新一輪的異常匹配操作。14. 簡述異常的層次結(jié)構(gòu)。答:當(dāng)有異常發(fā)生時, Java 虛擬機(jī)會生成異常對象交給運(yùn)行時系統(tǒng)。異常對象是異常類創(chuàng)建的。Java中的異常類是以一定的層次結(jié)構(gòu)來組織的。下圖表示了異常處理的類層次。15. 簡述 Java 中流的概念和作用。答:直觀地說,流就是用于處理輸入/輸出的字節(jié)序列或字符序列。Java 把程序與

35、各種實(shí)際設(shè)備之間的數(shù)據(jù)輸入輸出的處理細(xì)節(jié)都封裝在稱為“流”的系統(tǒng)類中。這樣,雖然各種實(shí)際設(shè)備的差別很大,但是我們可以通過 Java 平臺提供的“流”類,使用相同的方法來連接數(shù)據(jù)資源和應(yīng)用程序。java.io程序包中提供了大量的數(shù)據(jù)流類,編程人員只要使用相應(yīng)的數(shù)據(jù)流類,就可以與相應(yīng)的設(shè)備交換數(shù)據(jù)。16. 什么是線程?使用多線程有哪些好處?有會帶來哪些問題?答:通俗地講,線程是一個代碼執(zhí)行流。使用多線程的好處是:(1)多線程為多個代碼執(zhí)行流并發(fā)執(zhí)行提供了可能。(2)多線程程序比多進(jìn)程程序降低了資源占用要求。使用多線程也會對系統(tǒng)產(chǎn)生一些不利影響:(1)線程需要占用內(nèi)存,線程越多,內(nèi)存占用越多。(2)

36、線程過多,會消耗大量CPU時間來跟蹤線程。(3)必須考慮多線程同時訪問共享資源的問題,如果沒有協(xié)調(diào)好,就會產(chǎn)生令人意想不到的問題,例如死鎖和資源競爭等。(4)因為同一個任務(wù)的所有線程都共享相同的地址空間,并共享任務(wù)的全局變量,所以程序也必須考慮多線程同時訪問的全局變量問題。17. 試比較Runnable 接口中定義的run() 方法與Application程序入口 main() 方法有那些相近之處。答:在 Runnable 接口中定義的惟一的方法是 run(),在線程執(zhí)行時調(diào)用。線程退出 run() 之后,就已經(jīng)死亡,無法重新啟動或復(fù)用。不管是正常退出還是由于未捕獲異常退出,情況都是如此。在效

37、果上,線程的 run() 方法與 Java 應(yīng)用程序的 main() 方法作用相同:就是代碼的初始入口點(diǎn)。在應(yīng)用程序中, mian() 控制程序的主流程,在線程中, run() 控制線程任務(wù)的處理流程。從本質(zhì)上來說,對于一個新創(chuàng)建的線程, run() 方法可以被看成是 main()方法:如同程序是從 main() 方法開始運(yùn)行一樣,新線程就是從其 run() 方法開始運(yùn)行的。但是 main() 方法從 argv 來獲取它的參數(shù)(argv 一般是通過命令行來設(shè)定的),而新創(chuàng)建的線程是用編程的方式從原始線程獲取它的參數(shù)的。因此,我們可以通過構(gòu)造方法、靜態(tài)實(shí)例變量或者程序員設(shè)計的其他技術(shù)來獲得這些參

38、數(shù)。18. Java 線程的生命周期有哪些狀態(tài)?簡述線程狀態(tài)轉(zhuǎn)換方式。答:一個線程從創(chuàng)建到工作到死亡的過程稱為線程的生命周期。線程生命周期共有五個狀態(tài):新建狀態(tài)、就緒狀態(tài)、運(yùn)行狀態(tài)、阻塞狀態(tài)和死亡狀態(tài)。新建狀態(tài)是指創(chuàng)建了一個線程,但它還沒有啟動。就緒狀態(tài)是當(dāng)前線程處于新建狀態(tài)后,調(diào)用了 start() 方法,線程就處于就緒狀態(tài)。就緒狀態(tài)的線程具備了運(yùn)行條件,但尚未進(jìn)入運(yùn)行狀態(tài)。運(yùn)行狀態(tài)是某個就緒狀態(tài)的線程獲得 CPU 資源,正在運(yùn)行。阻塞狀態(tài)是正在運(yùn)行的線程遇到某個特殊情況。例如,延遲、掛起、等待 I/O 操作完成等。進(jìn)入阻塞狀態(tài)的線程讓出 CPU,并暫時停止自己的執(zhí)行。線程進(jìn)入阻塞狀態(tài)后,就

39、一直等待,直到引起阻塞的原因被消除,線程又轉(zhuǎn)入就緒狀態(tài),重新進(jìn)入就緒隊列排隊。死亡狀態(tài)是指線程不再具有繼續(xù)運(yùn)行的能力,也不能再轉(zhuǎn)到其他狀態(tài)。19. 簡述 Java 線程調(diào)度機(jī)制。答:Java 的線程調(diào)度機(jī)制負(fù)責(zé)調(diào)度線程。 Java 的線程調(diào)度策略采用搶占式調(diào)度,優(yōu)先級高的線程比優(yōu)先級低的線程優(yōu)先執(zhí)行。在優(yōu)先級相同的情況下,就按“先到先服務(wù)”的原則調(diào)度線程。 Java 有專門的調(diào)度器,它的任務(wù)是使優(yōu)先級高的線程能始終運(yùn)行,一旦時間片有空閑,則使具有同等優(yōu)先級的線程以輪流的方式順序使用時間片。只有當(dāng)高級別的線程死亡時(除非用 sleep(int millsecond) 或 wait() 方法讓出

40、CPU 資源),低級別線程才有機(jī)會獲得 CPU 資源。線程的優(yōu)先級用數(shù)值表示,數(shù)值越大優(yōu)先級越高(范圍110)。每個線程根據(jù)繼承性自動從父線程獲得一個線程的優(yōu)先級,也可在程序中重新設(shè)置線程的優(yōu)先級。對于任務(wù)較緊急的重要線程,可安排較高的優(yōu)先級。相反,則給一個較低的優(yōu)先級。20. 什么是守護(hù)線程?它和非守護(hù)線程有什么不同?答:所謂“守護(hù)線程(daemon thread)”是指,只要程序還在運(yùn)行,它就應(yīng)該在后臺提供某種公共服務(wù)的線程,但是守護(hù)線程不屬于程序的核心部分。因此,當(dāng)所有非守護(hù)線程都運(yùn)行結(jié)束的時候,程序也結(jié)束了。相反,只要還有非守護(hù)線程在運(yùn)行,程序就不能結(jié)束。事實(shí)上,“守護(hù)線程”和“非守護(hù)

41、線程”本質(zhì)上并沒有什么區(qū)別,只是JVM 對其控制的方式有所不同而已。主要表現(xiàn)在:第一,守護(hù)線程一般是在后臺提供某種服務(wù),而非程序核心部分的線程,所以它的優(yōu)先級最低。這意味著 JVM 會盡量先調(diào)度那些非守護(hù)線程運(yùn)行。第二,程序中所有非守護(hù)線程都已結(jié)束運(yùn)行時,程序就結(jié)束。21. 什么是事件?什么是事件驅(qū)動工作方式? 答:事件泛指由用戶或系統(tǒng)觸發(fā)的一個特定操作。例如:用鼠標(biāo)單擊命令按鈕,將觸發(fā)一個按鈕的Click事件;用鼠標(biāo)選擇一個菜單項,會產(chǎn)生一個菜單項的選擇事件,等等。事件驅(qū)動工作方式是指,程序啟動后,執(zhí)行一系列初始化操作,然后處于等待狀態(tài)。當(dāng)用戶或系統(tǒng)觸發(fā)某個事件之后,程序馬上就去執(zhí)行與該事件

42、對應(yīng)的過程。待事件過程執(zhí)行完畢后,系統(tǒng)又處于等待某事件發(fā)生的狀態(tài)。程序的這種工作方式稱為事件驅(qū)動工作方式。具有圖形界面的Java程序使用事件驅(qū)動工作方式。編寫具有圖形用于界面的 Java 程序時不僅要創(chuàng)建程序的圖形界面,還要編寫相應(yīng)的事件處理代碼,這樣程序才能響應(yīng)用戶的操作。22. Java GUI 庫代碼提供的基本功能有哪些?答:Java 通過提供 GUI 庫提供對圖形用戶界面編程的支持, GUI 庫的代碼提供了這樣一些基本功能:創(chuàng)建用戶界面的“ 控件” 或組件,如滾動條、按鈕和標(biāo)簽等。通過把 GUI 事件(例如單擊按鈕)和程序程序員編寫的事件處理代碼關(guān)聯(lián)起來,可以控制組件的動作 。支持對屏

43、幕上的組件進(jìn)行分組和布局。支持訪問窗口管理器,指定某個窗口作為輸入焦點(diǎn),讀取 JPEG 和其它影響文件 ,以及進(jìn)行打印等。23. 如何用分層次的方法看待組件和容器之間的關(guān)系? 答:容器和組件通常是具有一定的包含關(guān)系的。可以按照這樣的觀點(diǎn)分層次:頂層容器(不會包含在其它任何容器中的容器),例如JFrame 、JApplet 、JDialog 、JWindow等;中間容器,例如 JPanel 、JScrollPane 、JSplitPane 、JToolBar 等;基本控件,例如 JButton 、JComboBox 、JList 、JMenu 、JTextField 等;可編輯的組件,例如 JC

44、olorChooser 、JFileChooser 、JTextArea 等。在構(gòu)建程序的圖形界面時,一般一次創(chuàng)建頂層容器,中間容器,基本控件和可編輯組件,然后再把基本控件和可編輯組件放到中間容器中,最后再把中間容器放到頂層容器中。24. Java 是如何管理組件布局的? 答:在容器中可以放置許多組件,需要合理地安排這些組件在容器中的位置才能使界面方便使用并且美觀,這些工作就是組件的布局設(shè)計與管理。每個容器都有一個布局管理器用來管理放到這個容器中的組件的布局。當(dāng)容器需要對某個組件進(jìn)行定位或判斷其大小尺寸時,就會調(diào)用其對應(yīng)的布局管理器。布局管理器可以使我們生成的圖形用戶界面具有良好的平臺無關(guān)性。

45、在Java語言中,用布局管理器來管理組件在容器中的布局,而不直接設(shè)置組件位置和大小。容器通過選擇不同的布局管理器來決定布局。25. 什么是事件源?什么是事件監(jiān)聽者?它們之間是如何配合實(shí)現(xiàn)事件處理的?答:Java 中把能夠產(chǎn)生事件的組件叫做事件源。這個程序中的按鈕就是一個事件源。在Java 中,事件源產(chǎn)生的事件并不是由事件源本身處理,而是由其它對象來處理。用來處理事件的對象叫做事件監(jiān)聽者或事件監(jiān)聽器。系統(tǒng)把事件源產(chǎn)生的事件交給事件監(jiān)聽者處理,事件監(jiān)聽者使用相應(yīng)事件監(jiān)聽接口的事件處理方法處理該事件。26. 要讓應(yīng)用程序在框架窗口關(guān)閉后退出,可以使用哪些辦法? 答:在有著多個框架的程序中,可能不能因

46、為用戶關(guān)閉了多了框架中的一個就讓程序全部退出。默認(rèn)情況下,當(dāng)用戶關(guān)閉一個框架時,該框架會隱藏起來,但應(yīng)用程序不會終止。要退出程序,可以使用語句 fra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);或者在已注冊的 WindowListener 對象的 windowClosing 方法中去退出程序,比如在那里使用語句 System.exit(0);27. 簡述JFrame 框架的基本結(jié)構(gòu)。 答:JFrame 框架的基本結(jié)構(gòu)。其基本結(jié)構(gòu)如下圖所示:JFrame 窗口中包含一個 JRootPane 類的實(shí)例(對象),用這個對象管理放到框架窗體中的元素。

47、JRootPane 面板包含一個 glassPane 面板和一個 JLayeredPane 面板。 glassPane 面板能夠截取鼠標(biāo)移動,而JLayeredPane 面板負(fù)責(zé)管理 contentPane 內(nèi)容面板和 JMenuBar 菜單。程序中要使用的按鈕、列表框等組件不是直接添加到 JFrame 框架窗口,而是需要添加到內(nèi)容面板中,而 JMenuBar 對象則負(fù)責(zé)管理出現(xiàn)在框架窗口頂部的菜單。28. 簡述給窗口添加菜單的基本過程。答:(1)創(chuàng)建所需要的菜單條對象、菜單對象和菜單項對象。(2)把菜單項添加到菜單對象。 (3)把菜單添加到菜單條對象。 (4)把裝配好的菜單條對象添加的窗口對

48、象。 29. 簡述 Java 程序與數(shù)據(jù)庫連接的基本方法。答:Java 程序連接數(shù)據(jù)庫的方法有兩種:一種是使用 JDBC ODBC 橋連接器與數(shù)據(jù)庫連接,另一種是使用 JDBC 驅(qū)動程序與數(shù)據(jù)庫連接。用 JDBC ODBC 橋連接器與數(shù)據(jù)庫連接的基本過程:(1)建立 ODBC 數(shù)據(jù)源。(2)在程序中使用Class.forName(sun.jdbc.odbc.JdbcOdbcDriver)加載JDBC ODBC驅(qū)動程序。(3)使用DriverManager.getConnection(myUrl, user, password)建立數(shù)據(jù)庫連接(4)使用相應(yīng)語句做其它操作。使用 JDBC 驅(qū)動程序

49、與數(shù)據(jù)庫連接的過程:(1)下載和安裝相應(yīng)的 JDBC 驅(qū)動程序。(2)在程序中使用Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver)加載JDBC驅(qū)動程序。(3)使用DriverManager.getConnection(myUrl, user, password)建立數(shù)據(jù)庫連接(4)使用相應(yīng)語句做其它操作。30. 常見的Java 數(shù)據(jù)庫編程 API有哪些?它們的主要功能分別是什么? 答:DriverManage 類是 java.sql 包中用于管理數(shù)據(jù)庫驅(qū)動程序的類。它處理驅(qū)動程序的加載和建立數(shù)據(jù)庫連接。DriverManag

50、e 類的靜態(tài)方法 getConnection() 用于建立數(shù)據(jù)庫連接。該方法返回一個 Connection 對象。Connection 類是 java.sql 包中用于處理特定數(shù)據(jù)庫連接的類。Connection 對象表示一個實(shí)際的數(shù)據(jù)庫連接,在操作數(shù)據(jù)庫之前應(yīng)該首先建立數(shù)據(jù)庫連接,取得 Connection 對象。Statement 類是 java.sql 包中用于在指定的連接中處理 SQL 語句的類。取得 Connection 對象之后,用該對象的 createStatement() 方法創(chuàng)建 Statement 對象,然后就可以用 Statement 對象執(zhí)行 SQL 語句操作數(shù)據(jù)庫了。

51、ResultSet 類是 java.sql 包中用于管理查詢結(jié)果集的類。Statement 對象執(zhí)行 SQL 語句時,如果該 SQL 語句是一個查詢語句,將返回一個查詢結(jié)果集, ResultSet 對象就表示一個查詢結(jié)果集,它管理查詢結(jié)果記錄。編程題1. 編寫一個字符方式的Application程序。在程序中定義一個表示雇員的類Employee。在類Employee中定義兩個屬性,分別表示雇員的姓名和薪酬。定義類Employee構(gòu)造方法,為兩個屬性賦初值。另外在類Employee的中分別定義兩個獲取屬性值的成員方法。在程序的主類中創(chuàng)建一個Employee類的對象objE,為該對象的所有成員變量

52、賦初值,并且在標(biāo)準(zhǔn)輸出設(shè)備上輸出它的成員變量的值。請寫出此Application程序的源程序代碼。class Employee private String name; private double salary; Employee(String n, double s) name = n;salary = s;String getName() return name;double getSalary() return salary;public class PayrollSystem public static void main(String args) Employee objE = n

53、ew Employee(Carl Cracker, 1287.0);System.out.print(name = + objE.getName();System.out.println(, salary = + objE.getSalary();2. 編寫一個 Java Application 程序,要求從鍵盤讀入整數(shù)n,計算n!并輸出結(jié)果。import java.io.*;public class Test17 public static void main(String args) throws IOException int n;int i,m=1;String str;Buffere

54、dReader buf;buf=new BufferedReader(new InputStreamReader(System.in);System.out.print(Input an integer:);str=buf.readLine(); n=Integer.parseInt(str); for (i=1;i=n;i+)m=m*i;System.out.println(result=+m); 3. 編寫一個字符方式的Application程序。在程序中定義一個表示人的類CPerson。在類CPerson中有表示人的姓名和性別的成員變量,有顯示人的姓名和性別的成員方法。再定義一個表示教師

55、的子類CTeacher,CTeacher繼承自CPerson,同時在CTeacher中增加表示教師職稱的成員變量以及顯示職稱的成員方法。在程序的主類中創(chuàng)建一個CTeacher類的對象tobj,為該對象的所有成員變量賦初值,并且在標(biāo)準(zhǔn)輸出設(shè)備上輸出它的成員變量的值。請寫出此Application程序的源程序代碼。class CPerson String name = new String();String gender = new String();void showName() System.out.println(name);void showGender() System.out.println(gender);class CTeacher extends CPerson String post = new String();void showPost() System.out.println(post);public class CPersonApp public static void main(String args) / TODO Auto-generated method stubCTeacher tobj=new CTeacher(); tobj.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論