《Java程序設(shè)計》課后答案_第1頁
《Java程序設(shè)計》課后答案_第2頁
《Java程序設(shè)計》課后答案_第3頁
《Java程序設(shè)計》課后答案_第4頁
《Java程序設(shè)計》課后答案_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章習(xí)題參考答案一、簡答題1.Java語言有哪些特點(diǎn)?主要用于開發(fā)哪些方面的軟件?有7個特點(diǎn):(1)面向?qū)ο?,?)平臺無關(guān)性,(3)分布式,(4)可靠性和安全性,(5)多線程,(6)健壯性,(7)靈活性。2.Java有哪些版本,各用于什么場合?有3個版本。(1)JavaSE:主要用于桌面應(yīng)用軟件的編程。(2)JavaEE:用于企業(yè)級軟件開發(fā)。(3)JavaME:用于嵌入式系統(tǒng)和電子產(chǎn)品的軟件開發(fā)。3.什么是Java虛擬機(jī)?簡述其工作機(jī)制。JVM是JavaVirtualMachine(Java虛擬機(jī))的縮寫,是一個虛構(gòu)出來的計算機(jī),是通過在實際的計算機(jī)上仿真模擬各種計算機(jī)功能來實現(xiàn)的。Java虛擬機(jī)主要由字節(jié)碼指令集、寄存器、棧、垃圾回收堆和存儲方法域等構(gòu)成。JVM屏蔽了與具體操作系統(tǒng)平臺相關(guān)的信息,使Java程序只需生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺上不加修改地運(yùn)行。JVM在執(zhí)行字節(jié)碼時,實際上最終還是把字節(jié)碼解釋成具體平臺上的機(jī)器指令執(zhí)行。JVM是一種抽象機(jī)器,它附著在具體操作系統(tǒng)之上,本身具有一套虛機(jī)器指令,并有自己的棧、寄存器組等,在JVM上有一個Java解釋器用來解釋Java編譯器編譯后的程序。Java編程人員在編寫完軟件后,通過Java編譯器將Java源程序編譯為JVM的字節(jié)代碼,任何一臺機(jī)器只要配備了Java解釋器,就可以運(yùn)行這個程序。4.什么是JDK?它與Java有什么關(guān)系?jdk是Java開發(fā)工具集,是對java基礎(chǔ)環(huán)境和相應(yīng)開發(fā)平臺標(biāo)準(zhǔn)和工具包的封裝。JDK是整個JAVA的核心,包括了Java運(yùn)行環(huán)境JRE(JavaRuntimeEnvirnment)、一堆Java工具(javac/java/jdb等)和Java基礎(chǔ)的類庫(即JavaAPI包括rt.jar)。二、操作題publicclassMyJavaProgram{publicstaticvoidmain(Stringargs[]){System.out.println("這是我第一次使用Java!");}}第2章習(xí)題參考答案一、簡答題1.運(yùn)行Java程序需要哪些軟件?至少需要2個軟件:(1)JDK。(2)開發(fā)平臺,如Eclipse、MyEclipse、Jcreate、IntelliJIDEA等。2.JDK與Eclipse有什么關(guān)系?JDK是Java軟件開發(fā)工具包,是整個java開發(fā)的核心,它包含了JAVA的運(yùn)行環(huán)境JRE和JVM。Eclipse是一個集成開發(fā)平臺,其運(yùn)行依賴于jdk和jre。3.Java程序分為哪幾類?有什么區(qū)別?主要是2類:(1)Application,即Java應(yīng)用程序,是可以獨(dú)立運(yùn)行的Java程序,由Java解釋器控制執(zhí)行,也是最常見的類型。(2)Applet,即Java小程序,不能獨(dú)立運(yùn)行,需嵌入到Web頁,由Java兼容瀏覽器控制執(zhí)行。4.如何在Eclipse環(huán)境下運(yùn)行Java程序?搭建Java開發(fā)環(huán)境,安裝JDK,配置環(huán)境變量,并安裝eclipse,搭建完成打開并建Java項目,點(diǎn)擊File——New——JavaProject,輸入需要創(chuàng)建的項目名,創(chuàng)建完成后點(diǎn)擊功能下面src文件夾。點(diǎn)擊New——Class,在對話框輸入類名,注意名稱要與項目名稱一致,點(diǎn)擊完成編寫代碼,保存源文件,點(diǎn)擊“執(zhí)行”按鈕,即可運(yùn)行。。二、操作題3.依照本章例題,自己分別編寫一個Application和Applet,功能是輸出以下信息并在Eclipse環(huán)境下運(yùn)行。IloveJava!應(yīng)用程序:publicclassILoveJava{publicstaticvoidmain(Stringargs[]){System.out.println("IloveJava!");}}小程序:importjava.awt.*;importjava.applet.*;publicclassHelloWorldAppletextendsApplet{publicvoidpaint(Graphicsg){g.drawString("IloveJava!",20,20);}}第3章習(xí)題參考答案一、簡答題1.面向?qū)ο笏枷胗心男┗咎卣??面向?qū)ο?大基本特征:抽象、封裝、繼承、多態(tài)。2.面向?qū)ο笏枷氚男┗疽??面向?qū)ο蟮娜齻€基本要素:抽象、封裝、共享。3.面向?qū)ο缶幊绦枰男┎襟E?9個步驟:(1)分析確定在問題空間和解空間出現(xiàn)的全部對象及其屬性;(2)確定施加于每個對象的操作,即對象固有的處理能力;(3)分析對象間的聯(lián)系,確定對象彼此間傳遞的消息;(4)設(shè)計對象的消息模式,消息模式和處理能力共同構(gòu)成對象的外部特性;(5)分析各個對象的外部特性,將具有相同外部特性的對象歸為一類,從而確定所需要的類;(6)確定類間的繼承關(guān)系,將各對象的公共性質(zhì)放在較上層的類中描述,通過繼承來共享對公共性質(zhì)的描述;(7)設(shè)計每個類關(guān)于對象外部特性的描述;(8)設(shè)計每個類的內(nèi)部實現(xiàn)(數(shù)據(jù)結(jié)構(gòu)和方法);(9)創(chuàng)建所需的對象(類的實例),實現(xiàn)對象間的聯(lián)系(發(fā)送消息)。4.什么是類?類由哪些成分構(gòu)成?類是對一組具有相同特征的對象的抽象描述,所有這些對象都是這個類的實例。在Java語言中,類是一種數(shù)據(jù)類型,而對象是該類型的變量,變量名即是某個具體對象的標(biāo)識名,即對象名。類由屬性和方法構(gòu)成。5.解釋以下概念:類,對象,繼承,封裝,抽象類表示具有相同特征屬性的對象的集合,具有相同的特征。它給出了可以從它創(chuàng)建的對象的藍(lán)圖或描述。創(chuàng)建一個對象作為一個類的成員被稱為實例化。因此,對象是一個類的一個實例。繼承是允許新的類通過擴(kuò)展和完善它的能力而產(chǎn)生新類的機(jī)制?,F(xiàn)有的類稱為父類,而新的類稱為子類。子類可以繼承父類的屬性和方法,子類可以添加自己的屬性和方法,并可以修改任何父類方法。繼承定義了一個“是一個”關(guān)系。封裝是在一個類中綁定屬性和方法的過程。通過封裝,一個類的內(nèi)部細(xì)節(jié)可以被隱藏從外部。它允許類的元素只能通過類提供的接口訪問外部。抽象用來表征對問題領(lǐng)域進(jìn)行分析、設(shè)計中得出的抽象概念,是對一系列看上去不同,但是本質(zhì)上相同的具體概念的抽象;抽象類是不完整的,它只能用作基類,在面向?qū)ο蠓椒ㄖ?,抽象類主要用來進(jìn)行類型隱藏和充當(dāng)全局變量的角色。第4章習(xí)題參考答案一、簡答題1.Java提供了哪些數(shù)據(jù)類型,全部寫出來。整型:byte,short,int,long數(shù)值型浮點(diǎn)型:float,double基本數(shù)據(jù)類型字符型:char數(shù)據(jù)類型布爾型:boolean類:class復(fù)合數(shù)據(jù)類型字符串:String接口:interface2.如何進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換?有2種方式:自動類型轉(zhuǎn)換:運(yùn)算時,不同類型的數(shù)據(jù)先轉(zhuǎn)換成同一類型后再參與運(yùn)算,轉(zhuǎn)換的原則是位數(shù)少的類型轉(zhuǎn)換成位數(shù)多的類型,由系統(tǒng)自動處理。強(qiáng)制類型轉(zhuǎn)換:當(dāng)位數(shù)多的類型向位數(shù)少的類型進(jìn)行轉(zhuǎn)換時,需要用戶明確說明要轉(zhuǎn)換的類型,需要用戶在程序中指明。3.類的修飾符有哪些?有什么區(qū)別?類的修飾符包括訪問控制修飾符、靜態(tài)修飾符static、最終說明符final。訪問控制修飾符包括4種類型:privat、default、protected、public。用static聲明的成員變量被視為類的成員變量,而不能當(dāng)成實例對象的成員變量,也就是說,靜態(tài)變量是類固有的,可以被直接引用,而其它成員變量聲明后,只有生成對象時才能被引用。4.public的類和abstract的類有什么不一樣?public的類是公共類,可以被繼續(xù),可以實例化,可以被其他包訪問。abstract的類是抽象類,其中一定含有抽象方法,abstractclass的子類在繼承它時,對非抽象方法既可以直接繼承,也可以覆蓋;而對抽象方法,可以選擇實現(xiàn),也可以通過再次聲明其方法為抽象的方式,無需實現(xiàn),留給其子類來實現(xiàn),但此類必須也聲明為抽象類。5.什么是最終類?如何聲明?最終類不能被繼承,也沒有子類。final類中的方法默認(rèn)是final的。final方法不能被子類的方法覆蓋,但可以被繼承。final成員變量表示常量,只能被賦值一次,賦值后值不再改變。聲明方法:finalclassClassName。二、操作題1.創(chuàng)建一個學(xué)生類Student,包括學(xué)號no、姓名name、年齡age、性別sex四個屬性以及學(xué)習(xí)study、實踐practice兩個方法。classDepartment{intNo;StringName;intage;Stringsex;//部門經(jīng)理是CEO,而CEO是另外一個類publicstaticstudent(){System.out.println(name+"isastudent.”)}publicstaticpractice(){System.out.println(name+"isinlab.”)}}第5章習(xí)題參考答案一、簡答題1.Java提供了哪些注釋語句,功能有什么不同?Java提供了3種形式的注釋:(1)//一行的注釋內(nèi)容(2)/*一行或多行的注釋內(nèi)容*/(3)/**文檔注釋內(nèi)容*/2.識別下面標(biāo)識符,哪些是合法的,哪些是非法的。Ply_1,$32,java,myMothod,While,your-list,class,ourFriendGroup_$110,長度,7st合法:Ply_1,$32,java,myMothod,While,ourFriendGroup_$110,長度不合法:your-list,class,7st3.程序有哪3種控制結(jié)構(gòu)?共3種:順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)4.Java中提供了哪些循環(huán)控制語句?共3種:while循環(huán),dowhile循環(huán),for循環(huán)5.?dāng)?shù)組有什么特點(diǎn),數(shù)組的聲明和初始化方法與簡單變量有什么不同?數(shù)組是有序數(shù)據(jù)的集合,數(shù)組中的每個元素具有相同的類型,數(shù)組名用下標(biāo)來區(qū)分?jǐn)?shù)組中的元素位置。數(shù)據(jù)聲明為某種數(shù)據(jù)類型,表示數(shù)據(jù)的每個元素均為這種類型,數(shù)據(jù)的初始化表示對數(shù)據(jù)的每一個元素賦值。6.Java編碼規(guī)范有哪些?包(Package):包名采用完整的英文描述符,都由小寫字母組成。類(Class):類名采用完整的英文描述符,所有單詞的第一個字母均大寫。接口(Interface):接口名采用完整的英文描述符說明接口封裝,所有單詞的第一個字母大寫。組件(Component):使用完整的英文描述來說明組件的用途,末端應(yīng)接上組件類型。異常(Exception):通常采用字母e表示異常的實例,這是個特例,表示單詞Exception的第一個字母,易于記憶。變量、屬性、方法:采用完整的英文描述,第一個字母小寫,后面所有單詞的首字母大寫。獲取成員函數(shù):被訪問字段名的前面加上前綴get。布爾型的獲取成員函數(shù):所有的布爾型獲取函數(shù)必須用單詞is做前綴,表示“是不是……”這樣一個意義。設(shè)置成員函數(shù):被訪問字段名的前面加上前綴set表示設(shè)置。普通成員函數(shù):采用完整的英文描述說明成員函數(shù)功能,第一個單詞盡可能采用一個生動的動詞,第一個字母小寫,類似于變量名。靜態(tài)常量(staticfinal):全部采用大寫字母,單詞之間用下劃線分隔。循環(huán)變量:用于循環(huán)語句中控制循環(huán)次數(shù),通常用i,j,k或者counter表示。7.什么是方法的覆蓋?什么是方法的重載?類層次結(jié)構(gòu)中,如果子類中的一個方法與父類中的方法有相同的方法名并具有相同數(shù)量和類型的參數(shù)列表,則稱子類中的方法覆蓋了父類中的方法。通過子類引用覆蓋方法時,總是引用子類定義的方法,而父類中定義的方法被隱藏。方法的重載是Java實現(xiàn)面向?qū)ο蟮亩鄳B(tài)性機(jī)制的另一種方式。在同一個類中有二個或二個以上的方法可以有相同的名字,只要它們的參數(shù)聲明不同即可,這種情況稱為方法重載。第6章習(xí)題參考答案一、簡答題1.什么是類的實例化?在面向?qū)ο蟮木幊讨?,通常把用類?chuàng)建對象的過程稱為實例化,即用類創(chuàng)建對象的過程。2.有哪幾種方法?類的初始化就是對象的初始化,創(chuàng)建對象的方法:使用New關(guān)鍵字、使用Class類的newInstance方法、使用Constructor類的newInstance方法、使用Clone方法、使用反序列化。最常見的通過new命令初始化。3.如何引用一個對象?類的成員(包括成員屬性和成員方法)必須要在產(chǎn)生對象即實例化后才能被引用,引用的方法是:對象名.成員。4.普通數(shù)據(jù)類型參數(shù)和引用數(shù)據(jù)類型在方法中的傳遞有什么不同?如果變量是基本數(shù)據(jù)類型(包括字符串和數(shù)組),則按值傳遞,即方法調(diào)用前后變量的值不變;如果變量的類型是類或者接口,即引用數(shù)據(jù)類型,則按地址傳遞,變量的值在方法調(diào)用后會發(fā)生改變。5.什么是構(gòu)造方法?構(gòu)造方法有什么特點(diǎn)?構(gòu)造方法是包含在類中的一種特殊方法,在類實例化時它會被自動調(diào)用,其參數(shù)在實例化命令中指定。構(gòu)造方法的特征:具有與類相同的名稱,不含返回類型,不能在方法中用return語句返回一個值,在類實例化時,由系統(tǒng)自動調(diào)用。6.在一個類中,如果幾個構(gòu)造方法同名,則參數(shù)不能相同。參數(shù)指的是什么?指參數(shù)的類型、個數(shù)、順序不能都相同。第7章習(xí)題參考答案一、簡答題1.什么是包?包中包括一些什么內(nèi)容?包也稱類庫,可以理解為文件夾,用于解決類的命名沖突問題。包由下級包和類組成。2.如果有一個包pag1,它的子包是pag2,如果需要將這兩個包都引入程序,至少需要使用幾條import語句?2條,分別是:importpag1;importpag2;3.接口與類有什么不同?與抽象方法存在什么樣的關(guān)系?接口是一種特殊的類,也是一種特殊的抽象類,接口中所有方法全部是抽象方法。接口不能直接實例化,必須要實現(xiàn)所有抽象方法后才能實例化。4.Java提供了哪些系統(tǒng)類庫?各起什么作用?Java提供了很多類庫,即包,主要包括:java.lang包,java.io包,java.applet包,java.awt包,包,java.math包,java.util包,java.SQL包,javax.swing包等。5.Java的基類是什么?它提供了哪些主要方法?java.lang包中的類Object是Java中所有類的基礎(chǔ)類,不需要用import語句引入,每個程序運(yùn)行時,系統(tǒng)都會自動引入java.lang包。提供了基本數(shù)據(jù)類型及輸入輸出等方法6.字符串類有哪兩種?各有什么特點(diǎn)?String類和StringBuffer類。String類用于比較兩個字符串、查找串中的字符及子串、字符串與其它類型的轉(zhuǎn)換,String類對象的內(nèi)容初始化后不能改變。StringBuffer類用于內(nèi)容可以改變的字符串,可將其它類型的數(shù)據(jù)增加、插入到字符串中,也可翻轉(zhuǎn)字符串的的內(nèi)容,字符串是一種特殊形式的數(shù)組。7.JDK幫助系統(tǒng)有哪幾種?分別說明它們的使用特點(diǎn)。JDK幫助文件提供了三種使用方法:第一種是在線查詢,通過Oracle官網(wǎng)的APISpecification(API規(guī)范)頁面查詢,只支持英文。第二種是下載網(wǎng)頁格式的幫助文檔,其啟動文件是index.html。第三種是下載chm格式的幫助文檔。8.設(shè)置cha="JavaApplication",下面結(jié)果是什么?cha.length(),cha.concat("Applet"),cha.substring(3,8)cha.replace('a','A')15,JavaApplicationApplet,aAppli,JAVAApplicAtion第8章習(xí)題參考答案一、簡答題1.實現(xiàn)類的繼承是通過哪個關(guān)鍵字實現(xiàn)的?使用extends和implements這兩個關(guān)鍵字來實現(xiàn)繼承,而且所有的類都是繼承于java.lang.Object,當(dāng)一個類沒有繼承的兩個關(guān)鍵字,則默認(rèn)繼承object(這個類在java.lang包中,所以不需要import祖先類。在Java中,類的繼承是單一繼承,也就是說,一個子類只能擁有一個父類,所以extends只能繼承一個類。2.Java能實現(xiàn)多繼承關(guān)系嗎?如何解決這個問題?在Java中,類的繼承是單一繼承,也就是說,一個子類只能擁有一個父類,所以extends只能繼承一個類。使用implements關(guān)鍵字可以變相的使java具有多繼承的特性,使用范圍為類繼承接口的情況,可以同時繼承多個接口,接口跟接口之間采用逗號分隔。3.如果父類和子類同時提供了同名方法,在類實例化后,調(diào)用的是哪個類的方法?采用什么辦法避免混淆?子類。通過super與this關(guān)鍵字區(qū)別父類和子類。super關(guān)鍵字:我們可以通過super關(guān)鍵字來實現(xiàn)對父類成員的訪問,用來引用當(dāng)前對象的父類。this關(guān)鍵字:指向自己的引用,表示當(dāng)前正在調(diào)用此方法的對象引用。4.什么是抽象類?抽象類和普通類有什么不同?抽象類是指類中含有抽象方法的類,抽象類和普通類區(qū)別是:1、和普通類比較起來,抽象類它不可以被實例化,這個區(qū)別還是非常明顯的。2、抽象類能夠有構(gòu)造函數(shù),被繼承的時候,子類就一定要繼承父類的一個構(gòu)造方法,但是,抽象方法不可以被聲明成靜態(tài)。3、在抽象類當(dāng)中,可以允許普通方法有主體,抽象方法只需要申明,不需要實現(xiàn)。4、含有抽象方法的類,必須要申明為抽象類。5、抽象的子類必須要實現(xiàn)抽象類當(dāng)中的所有抽象方法,否則的話,這個子類也是抽象類。6、抽象類它一定要有abstract關(guān)鍵詞修飾。第9章習(xí)題參考答案一、簡答題1.什么是接口?接口與類有什么不同?接口是由常量和抽象方法組成的特殊類。一個類只能由一個父類,但是它可以同時實現(xiàn)若干個接口。這種情況下如果把接口理解成特殊的類,那么這個類利用接口實際上就獲得了多個父類,即實現(xiàn)了多重繼承。與類定義相仿,聲明接口時也需要給出訪問控制符,不同的是接口的訪問控制符只有public一個。用public修飾的接口是公共接口,可以被所有的類和接口使用,而沒有public修飾符的接口則只能被同一個包中的其他類和接口利用。接口也具有繼承性。定義一個接口是可以通過extends關(guān)鍵字聲明該新接口是某個已經(jīng)存在的父接口的派生接口,它將繼承父接口的所有屬性和方法。與類的繼承不同的是一個接口可以有一個以上的父接口,它們之間用逗號分隔,形成父接口列表。新接口將繼承所有父接口中的屬性和方法。2.接口的修飾符包括哪些?接口的修飾符只有:public。接口中的方法會加上publicabstract或者publicstaticfinal。3.接口與抽象類有什么不同?1、抽象類和接口都不能直接實例化,如果要實例化,抽象類變量必須指向?qū)崿F(xiàn)所有抽象方法的子類對象,接口變量必須指向?qū)崿F(xiàn)所有接口方法的類對象。2、抽象類要被子類繼承,接口要被類實現(xiàn)。3、接口只能做方法申明,抽象類中可以做方法申明,也可以做方法實現(xiàn)4、接口里定義的變量只能是公共的靜態(tài)的常量,抽象類中的變量是普通變量。5、抽象類里的抽象方法必須全部被子類所實現(xiàn),如果子類不能全部實現(xiàn)父類抽象方法,那么該子類只能是抽象類。同樣,一個實現(xiàn)接口的時候,如不能全部實現(xiàn)接口方法,那么該類也只能為抽象類。6、抽象方法只能申明,不能實現(xiàn),接口是設(shè)計的結(jié)果,抽象類是重構(gòu)的結(jié)果。7、抽象類里可以沒有抽象方法。如果一個類里有抽象方法,那么這個類只能是抽象類。4.如何實現(xiàn)多個接口?類雖然只能繼承一個父類(抽象類或其他類),但可以通過implements實現(xiàn)多個接口。如:classClassNameextendsSuperClassNameimplementsInterfaceName1,InterfaceName2第10章習(xí)題參考答案一、簡答題1.什么是多態(tài)?類的多態(tài)是怎么實現(xiàn)的?多態(tài)(Polymorphism)按字面的意思就是“多種狀態(tài)”,在面向?qū)ο笳Z言中,接口的多種不同的實現(xiàn)方式即為多態(tài)。多態(tài)表示不同的對象可以執(zhí)行相同的動作,但要通過它們自己的實現(xiàn)代碼來執(zhí)行。多態(tài)通過重載和覆蓋實現(xiàn),重載發(fā)生在一個類中,覆蓋發(fā)生在子類,子類重寫父類相同名稱的方法。2.創(chuàng)建多態(tài)需要哪些條件?

在代碼中實現(xiàn)Java的多態(tài)必須遵循的必要條件:存在子類繼承父類關(guān)系(包括接口的實現(xiàn))、子類覆蓋父類中的方法,在實現(xiàn)多態(tài),需有子類對父類方法的覆蓋(重寫)。3.類是怎么向接口轉(zhuǎn)型實現(xiàn)多態(tài)的?定義一個父類類型的引用指向一個子類的對象既可以使用子類強(qiáng)大的功能,又可以抽取父類的共性。所以,父類類型的引用可以調(diào)用父類中定義的所有屬性和方法,而對于子類中定義而父類中沒有的方法,它是無可奈何的;同時,父類中的一個方法只有在在父類中定義而在子類中沒有重寫的情況下,才可以被父類類型的引用調(diào)用;對于父類中定義的方法,如果子類中重寫了該方法,那么父類類型的引用將會調(diào)用子類中的這個方法,這就是動態(tài)連接。第11章習(xí)題參考答案一、簡答題1.什么是異常?異常產(chǎn)生的原因有哪些?程序員編寫程序時,難免會出現(xiàn)一些問題,導(dǎo)致運(yùn)行時會出現(xiàn)一些非正常的現(xiàn)象,其中非致命性錯誤稱為異常。產(chǎn)生的原因有以下3種情況:(1)JVM檢測到非正常的執(zhí)行狀態(tài),這些狀態(tài)可能由以下情況引起的:表達(dá)式違反了Java語言的語義,裝入或鏈接程序時出錯,超出了資源限制,如內(nèi)存不足,這種異常是程序員無法預(yù)知的。(2)程序代碼中的throws語句被執(zhí)行。(3)因為代碼段不同步而產(chǎn)生,可能的原因是:Thread(線程)的stop方法被調(diào)用,JVM內(nèi)部發(fā)生錯誤。2.為什么Java的異常處理技術(shù)優(yōu)于傳統(tǒng)程序的異常處理技術(shù)?在沒有異常處理機(jī)制的程序設(shè)計語言中進(jìn)行異常處理,通常是在程序設(shè)計中使用if-else或switch-case語句所能設(shè)想的到的錯誤情況,以捕捉程序中可能發(fā)生的錯誤。在這種處理方式的程序中,對異常的監(jiān)視、報告和處理的代碼與程序中完成正常功能的代碼交織在一起,即在完成正常功能的程序的許多地方插入了與處理異常有關(guān)的程序塊。這種處理方式雖然在異常發(fā)生點(diǎn)可以看到程序如何處理異常,但它干擾了人們對程序正常功能的理解,使程序的可讀性和可維護(hù)性下降,并且由于人的思維限制,常常會遺漏一些意想不到的異常。Java的異常處理機(jī)制是在程序中監(jiān)視可能發(fā)生異常的程序塊,將一個程序中的所有異常收集起來放到程序的某一段中處理,而不必在被監(jiān)視的程序塊中多處插入處理異常的代碼,使完成功能的程序代碼與進(jìn)行異常處理的程序代碼分開,增強(qiáng)了程序的可讀性和可靠性,減少了編程人員的工作量,增加了程序的靈活性。此外,這種機(jī)制可以及時有效地處理程序運(yùn)行中的異常,可以預(yù)防因錯誤的程序代碼或系統(tǒng)錯誤所造成的不可預(yù)期的結(jié)果發(fā)生,并且當(dāng)這些不可預(yù)期的錯誤發(fā)生時,異常處理機(jī)制會嘗試恢復(fù)異常發(fā)生前的狀態(tài)或?qū)@些錯誤結(jié)果做一些善后處理。3.在Java代碼中可用來處理異常的方式有哪些?(1)在可能產(chǎn)生異常的方法中,采用Java語言提供的try-catch-finally語句塊處理異常。(2)如果一個方法可能生成某種異常,但是并不能確定如何處理這種異常,則此方法應(yīng)聲明拋棄該種異常,表明該方法將不對此類異常進(jìn)行處理,而由該方法的調(diào)用者負(fù)責(zé)處理。此時需在方法聲明中包含throws子句。4.如果發(fā)生了一個異常,但沒有找到適當(dāng)?shù)漠惓L幚沓绦?,則會發(fā)生什么情況?如果發(fā)生了一個異常,但沒有找到適當(dāng)?shù)漠惓L幚沓绦?,則Java系統(tǒng)會采用Java異常處理機(jī)制預(yù)設(shè)處理方法來處理異常,即一旦程序發(fā)生異常,程序就會被終止并顯示相應(yīng)的錯誤信息給用戶。5.說明throw與throws有什么不同?throw與throws的不同之處在于:throw語句是一個獨(dú)立的語句,用來明確地拋出一個異常,其作用是改變程序的執(zhí)行流程,使程序跳到相應(yīng)的異常處理語句中執(zhí)行。而throws語句總是和方法定義結(jié)合起來用,在有些情況下,不需要一個方法處理本身可能產(chǎn)生的異常,而是希望把異常向上移交給調(diào)用這個方法的方法來處理,就需要通過throws語句來實現(xiàn)。6.在設(shè)計catch塊處理不同的異常時,一般應(yīng)注意哪些問題?應(yīng)注意如下的問題:(1)catch塊中的語句應(yīng)根據(jù)異常的不同執(zhí)行不同的操作,比較通用的操作是打印異常的相關(guān)信息,包括異常名稱、產(chǎn)生異常的方法名等。(2)由于異常對象與catch塊的匹配是按catch塊的先后排列順序進(jìn)行的,所以在處理多異常進(jìn)應(yīng)注意認(rèn)真設(shè)計各catch塊的排列順序。一般地,處理較具體和較常見的異常的catch塊應(yīng)放在前面,而可以與多種異常相匹配的catch塊應(yīng)放在較后的位置。第12章習(xí)題參考答案一、簡答題1.什么是AWT?什么是Swing?兩者有什么區(qū)別?答:AWT是AbstractWindowToolkit幾個單詞的縮寫,其中文含義是抽象窗口工具包,AWT是Java的第一個GUI框架,AWT是JDK1.0與JDK1.1版本下提供的GUI開發(fā)工具包,包含60多個組件類、接口及其方法,可用于創(chuàng)建基于窗口或Applet的GUI應(yīng)用。Swing是一個用于開發(fā)Java應(yīng)用程序用戶界面的開發(fā)工具包,swing以抽象窗口工具包(AWT)為基礎(chǔ)使跨平臺應(yīng)用程序可以使用任何可插拔的外觀風(fēng)格。Swing開發(fā)人員只用很少的代碼就可以利用Swing豐富、靈活的功能和模塊化組件來創(chuàng)建優(yōu)雅的用戶界面。兩者的區(qū)別:AWT是java圖形用戶界面GUI開發(fā)的基礎(chǔ)框架,Swing是以AWT作為基礎(chǔ)的第二代GUI開發(fā)框架。Swing相對于AWT具有以下優(yōu)勢:■Swing組件完全由純Java語言實現(xiàn),沒有本地代碼,不依賴于具體平臺的支持,功能更強(qiáng)大,具有更好的平臺無關(guān)性?!鯯wing程序中可以指定GUI組件的LookandFeel,真正做到與平臺無關(guān)?!鯯wing組件提供了許多AWT組件無法實現(xiàn)的功能,如Swing組件可以顯示圖像與圖標(biāo),支持邊框、標(biāo)題及tooltips等?!鯯wing除具有與AWT原有組件類似的組件外,還增加了一個豐富的高層組件集合,集合中集成了諸如表格(JTable)、樹(JTree)等組件。2.布局管理器的作用是什么?Java提供了哪幾種布局管理?分別有什么特點(diǎn)?答:布局管理器是執(zhí)行布局管理的特殊對象,它確定容器中的組件是如何組織和管理的,即通過布局管理器來實現(xiàn)控制組件在容器控件中的排列順序和位置。Java提供了多種布局管理器:(1)FlowLayout(流布局管理器)流布局管理器以控件加入到容器的次序,按行一個接一個地放置控件,當(dāng)該布局管理器的控件到達(dá)此JFrame框架的右邊界時,它自動開始在下一行放置控件。(2)GridLayout(網(wǎng)格布局管理器)網(wǎng)格布局是流布局管理器的擴(kuò)展,網(wǎng)格布局把面板劃分為矩形格子,然后網(wǎng)格布局把創(chuàng)建的組件放入每一個格子,從左到右,從上自下地放置。網(wǎng)格布局與流布局不同的是它按指定的列數(shù)自動換行。網(wǎng)格布局管理器和流布局管理器的另一個區(qū)別是其組件占満容器所分配的整個區(qū)域,當(dāng)窗口大小改變時,組件大小也隨著改變。在默認(rèn)狀態(tài)下,GridLayout管理器使控件對準(zhǔn)每一矩形的中心。(3)BorderLayout(邊界布局管理器)BorderLayout將容器分為東、南、西、北、中5個區(qū)域,按照上北下南左西右東的格局分布,各用一個方位單詞表示,注意第一個字母是大寫:東:East、南:South、西:West、北:North、中:Center。放置組件時,必須從這5種方向中選擇其一以靠近窗口的邊界,BorderLayout最多放置5個組件,當(dāng)少于5個時,沒有放置組件的區(qū)域被相鄰區(qū)域占用。(4)GridBagLayout網(wǎng)格袋布局管理器GridBagLayout布局管理器是java.awt包中提供的最靈活、最復(fù)雜的布局管理器。它類似于網(wǎng)格布局(GridLayout),GridBagLayout布局管理器把組件組織成長方形網(wǎng)格,使用這種布局,可靈活地把組件放在長方形網(wǎng)格的任何行和列中,它也允許特定的組件跨多行或多列。(5)CardLayout(卡片布局管理器)CardLayout卡片布局管理器是采用卡片式的管理方法,可存儲幾個不同的布局,每個布局就像是一個卡片組中的一張卡片,在一個給定的時間總會且只有一張卡片在頂層,其它卡片看不到。當(dāng)需要許多面板切換,而每個面板需要顯示為不同布局時,可以使用卡片布局。3.容器有哪些作用?Swing有哪些容器類控件?分別有什么特點(diǎn)?答:容器自身首先也是一種組件,具有其他組件的共同特性;其次容器是一種特殊的組件,其特殊性在于容器的功能是用來容納一般的組件對象與容器組件對象的。Swing中定義了以下幾種窗口控件:(1)JFrame窗體JFrame窗體是一個容器,它是Swing程序中各個組件的載體,可以將JFrame看作是承載著血Swing組件的容器。在開發(fā)應(yīng)用程序時,可以通過繼承java.swing.JFrame類創(chuàng)建一個窗體。在這個窗體中添加組件,同時為組件設(shè)置事件。(2)JDialog對話框JDialog窗體的功能是從另外一個窗體中彈出另外一個窗體,JDialog窗體實質(zhì)上就是另一種類型的窗體,它與JFrame窗體類似,在使用時也需要調(diào)用getCOntentPane()方法將窗體轉(zhuǎn)換成容器,然后在容器中設(shè)置窗體的特性。(3)JPanel面板JPanel是Java圖形用戶界面(GUI)工具包swing中的面板容器類,包含在javax.swing包中,是一種輕量級容器,可以加入到JFrame窗體中。JPanel默認(rèn)的布局管理器是FlowLayout,其自身可以嵌套組合。4.設(shè)計一個菜單系統(tǒng)的步驟有哪些?答:設(shè)計一個菜單一般要經(jīng)過以下幾個步驟:(1)使用JMenuBar類創(chuàng)建菜單欄。(2)使用JMenu類創(chuàng)建主菜單項。(3)使用JMenuItem類創(chuàng)建菜單項和子菜單項。(4)通過使用JCheckBoxMenuItem等類設(shè)置菜單項的一些屬性。(5)實現(xiàn)菜單項的事件處理。第13章習(xí)題參考答案一、簡答題1.什么是事件?事件處理包括哪些因素?答:Java對事件的處理采用授權(quán)的事件模型,也成為委托事件模型。在授權(quán)事件模型中,事件是一個描述事件源狀態(tài)改變的對象。通過鼠標(biāo)、鍵盤與GUI直接或間接交互都會產(chǎn)生事件,按回車鍵、單擊按鈕、在一個下拉列表中選擇一個選項等操作。程序有時需對發(fā)生的事件作出反應(yīng)來實現(xiàn)特定的任務(wù)。事件處理主要包括:事件、事件源和監(jiān)聽器(事件處理者)。事件是由事件源產(chǎn)生,事件源可以是GUI組件、JavaBen或由生成事件能力的對象。事件發(fā)生后,組件本身并不處理,需要交給監(jiān)聽器(另外一個類)來處理。實際上監(jiān)聽器也可稱為事件處理者。監(jiān)聽器對象屬于一個類的實例,這個類實現(xiàn)了一個特殊的接口,名為"監(jiān)聽器接口"。監(jiān)聽器負(fù)責(zé)處理事件源發(fā)生的事件,監(jiān)聽器是一個對象,為了處理事件源發(fā)生的事件,監(jiān)聽器會自動調(diào)用一個方法來處理事件.對每個明確的事件的產(chǎn)生,都相應(yīng)地定義一個明確的Java方法。2.請具體說明Java的事件處理機(jī)制中涉及到哪些方面?答:Java對事件的處理采用授權(quán)的事件模型,即委托代理模型。委托代理模型(Delegationmodel)的原理是:當(dāng)事件產(chǎn)生時,該事件被送到產(chǎn)生該事件的組件去處理,而要能夠處理這個事件,該組件必須注冊(register)有與該事件有關(guān)的一個或多個被稱為listeners監(jiān)聽器的類,這些類包含了相應(yīng)的方法能接受事件并對事件進(jìn)行處理,包括如下處理過程:(1)確定事件源圖形界面的每個可能產(chǎn)生事件的組件稱為事件源,不同事件源上發(fā)生的事件的種類不同。(2)注冊事件源如果希望事件源上發(fā)生的事件被程序處理,就要把事件源注冊給能夠處理該事件源上那種類型的事件監(jiān)聽器。監(jiān)聽器是屬于一個類的實例,這個類實現(xiàn)了一個特殊的接口,名為“監(jiān)聽器接口”。(3)委托處理事件當(dāng)事件源上發(fā)生監(jiān)聽者可以處理的事件時,事件源把這個事件作為實際參數(shù)傳遞給監(jiān)聽者中負(fù)責(zé)處理這類事件的方法,該方法根據(jù)事件對象中封裝的信息來確定如何響應(yīng)這個事件。3.事件處理中,事件接口有什么作用?事件適配器類有什么作用?請簡述通過實現(xiàn)接口和繼承適配器來實施事件處理有什么異同?答:事件處理機(jī)制中,事件接口是一個抽象類,其中定義了可以監(jiān)聽事件的抽象方法。將需要監(jiān)聽的對象封裝在自定義的事件狀態(tài)對象類(EventObject)中,這個類必須繼承java.util.EventObject。事件狀態(tài)對象作為單參傳遞給應(yīng)響應(yīng)該事件的自定義監(jiān)聽器方法中。該自定義監(jiān)聽器需實現(xiàn)自定義監(jiān)聽接口,實現(xiàn)此接口中以事件狀態(tài)對象為參數(shù)的方法。發(fā)出某種特定事件的事件源:必須在類中實例化自定義的監(jiān)聽器對象,當(dāng)監(jiān)聽到eventobject時,調(diào)用相應(yīng)方法進(jìn)行處理。事件適配器(Adapter)可以認(rèn)為是一個簡化版的監(jiān)聽器,而監(jiān)聽器是對一類事件可能產(chǎn)生的所有動作進(jìn)行監(jiān)聽。每個含有多個方法的AWT監(jiān)聽器接口都配有一個適配器(XxxAdapter)類,這個類實現(xiàn)了接口中的所有方法,但每個方法沒有做任何事情??梢酝ㄟ^繼承適配器類來指定對某些事件的響應(yīng)動作,而不必實現(xiàn)接口中的每個方法。要說明一點(diǎn),因為ActionListener接口中只有一個抽象方法,因此沒必要提供適配器類。使用適配器類來實現(xiàn)事件監(jiān)聽,其最大優(yōu)勢在于當(dāng)事件監(jiān)聽只用到其中一個方法時,不需要重寫抽象接口中的所有方法,消除了代碼冗余,簡化程序開發(fā)代碼量。第14章習(xí)題參考答案一、簡答題1.什么叫流?流分為哪幾種?答:流即數(shù)據(jù)流(datastream),是一組有序,有起點(diǎn)和終點(diǎn)的字節(jié)的數(shù)據(jù)序列。數(shù)據(jù)流按照功能一般分為輸入流(InputStream)和輸出流(OutputStream);按照處理數(shù)據(jù)的單位可以分為字節(jié)流和字符流;按照對流中數(shù)據(jù)的處理方式,流又可以分為文本流和二進(jìn)制流。Java的所有I/O流都是四個抽象類的子類,這四個抽象類是什么?答:4個抽象類分別是:InputStream、OutputStream、Reader、Writer。3.寫出下面這些輸入輸出流類的輸入輸出操作的特點(diǎn)。(1)InputStream和OutputStream(2)FileInputStream和FileOutputStream答:InputStream和OutputStream為各種輸入輸出字節(jié)流的基類,所有字節(jié)流都繼承這兩個基類。它們不能實例化,但是規(guī)定了所有流都必須具備的讀寫方法。處理單元為一個字節(jié),操作字節(jié)和字節(jié)數(shù)組,常用于音頻、圖片等數(shù)據(jù)傳輸。FileInputStream和FileOutputStream是操作文件的字節(jié)流,從文件系統(tǒng)中的某個文件中獲得輸入或輸出字節(jié)。4.File類的作用是什么?答:File類是I/O包中唯一能夠代表磁盤文件本身的對象,使用File類,我們可以方便地建立與某磁盤文件的連接。一個對應(yīng)著某磁盤文件或目錄的File對象一經(jīng)創(chuàng)建,我們就可以通過調(diào)用它的方法來獲得該文件或目錄的屬性,F(xiàn)ile類中還定義了一些對文件或目錄進(jìn)行管理、操作的方法,利用這些方法可以完成對文件和目錄的建立、刪除、查詢、重命名等操作。5.Java語言是否可以讀入和寫出文本格式的文件?如果可以,如何讀寫?答:可以。使用FileReader類和FileWriter類進(jìn)行。6.流文件讀入和寫出的操作過程有哪些?答:流文件讀入和寫出的操作過程如下:(1)利用文件名字符串或File對象創(chuàng)建輸入輸出流對象以創(chuàng)建FileInputStream為例,它有兩個常用的構(gòu)造函數(shù):FileInputStream(StringFileName):利用文件名(包括路徑名)字符串創(chuàng)建從該文件讀入數(shù)據(jù)的輸入流FileInputStream(Filef):利用巳存在的File對象創(chuàng)建從該對象對應(yīng)的磁盤文件中讀入數(shù)據(jù)的輸入流注意:在創(chuàng)建文件輸入或輸出流時可能因給出的文件名不對,或路徑不對,或文件的屬性不對不能進(jìn)行讀寫而造成錯誤,此時系統(tǒng)會拋出異常FileNotFoundException,所以創(chuàng)建文件輸入輸出流并調(diào)用構(gòu)造函數(shù)的語句應(yīng)該被包括在try塊中,并有相應(yīng)的catch塊來處理它們可能產(chǎn)生的異常。(2)從文件輸入輸出流中讀寫數(shù)據(jù)從文件輸入輸出流中讀寫數(shù)據(jù)有兩種方式:一是直接利用FileInputStream和FileOutputStream自身的讀寫功能;另一種是以FileInputStream和FileOutputStream為原始數(shù)據(jù)源,再套接上其他功能較強(qiáng)大的輸入輸出流完成文件的讀寫操作。二、操作題1.在程序中寫一個"HelloJavaWorld你好世界"輸出到操作系統(tǒng)文件Hello.txt文件中。程序參考代碼如下:importjava.io.File;importjava.io.FileOutputStream;publicclassTest5{ publicstaticvoidmain(String[]args){ //向文件D:/Hello.txt,寫入內(nèi)容 Filefile=newFile("D:/Hello.txt"); try{ //創(chuàng)建輸出流 FileOutputStreamfos=newFileOutputStream(file); //把String類型的字符串轉(zhuǎn)化為byte數(shù)組的數(shù)據(jù)保存在輸出流中 fos.write("HelloJavaWorld你好世界".getBytes()); fos.flush();//刷新輸出流 fos.close();//關(guān)閉輸出流 }catch(Exceptione){ e.printStackTrace(); } }}2.編寫程序,實現(xiàn)當(dāng)用戶輸入的文件名不存在時,可以重新輸入,直到輸入一個正確的文件名后,打開這個文件并將文件的內(nèi)容輸出到屏幕上的功能。程序參考代碼如下:importjava.io.*;publicclassXT009202{publicstaticvoidmain(Stringargs[]){Stringstr;FilesourceFile;BufferedReadersource;while(true){try{InputStreamReaderdin=newInputStreamReader(System.in);BufferedReaderin=newBufferedReader(din);System.out.print("請輸入文件路徑及文件名:");sourceFile=newFile(in.readLine());source=newBufferedReader(newFileReader(sourceFile));while((str=source.readLine())!=null){System.out.println(str);}din.close();in.close();break;}catch(IOExceptione){System.out.println("I/O錯誤!重新輸入文徑路徑及文件名");}}//endwhile}}3.編寫程序,將程序文件的源代碼復(fù)制到程序文件所在目錄下的“backup.txt”文件中。程序參考代碼如下:importjava.io.*;publicclassXT009203{publicstaticvoidmain(Stringargs[]){try{FileInputStreamfis=newFileInputStream("XT009203.java");FileOutputStreamfos=newFileOutputStream("temp.txt");intread=fis.read();while(read!=-1){fos.write(read);read=fis.read();}fis.close();fos.close();}catch(IOExceptione){System.out.println(e);}}}第15章習(xí)題參考答案一、簡答題1.什么叫線程?什么叫多線程?答:線程是程序中的一個執(zhí)行流,每個線程都有自己的專有寄存器(棧指針、程序計數(shù)器等),但代碼區(qū)是共享的,即不同的線程可以執(zhí)行同樣的函數(shù)。多線程是指程序中包含多個執(zhí)行流,即在一個程序中可以同時運(yùn)行多個不同的線程來執(zhí)行不同的任務(wù),也就是說允許單個程序創(chuàng)建多個并行執(zhí)行的線程來完成各自的任務(wù)。2.簡述進(jìn)程和線程的聯(lián)系和區(qū)別。答:(1)資源分配&處理器調(diào)度:進(jìn)程是資源分配的基本單位,線程是處理器調(diào)度的基本單位。(2)地址空間:進(jìn)程擁有獨(dú)立的地址空間;線程沒有獨(dú)立的地址空間,同一進(jìn)程內(nèi)多個線程共享其資源。(3)劃分尺度:線程更小,所以多線程程序并發(fā)性更高。(4)執(zhí)行:一個程序至少有一個進(jìn)程,一個進(jìn)程至少有一個線程。3.簡述線程的生命周期。答:線程在它完整的生命周期中,包括新建、就緒、運(yùn)行、阻塞和死亡5種狀態(tài)。4.創(chuàng)建線程的兩種方式分別是什么?各有什么優(yōu)缺點(diǎn)。答:創(chuàng)建線程的兩種方式分別是繼承Thread類創(chuàng)建和實現(xiàn)Runnable接口創(chuàng)建。(1)繼承Thread類創(chuàng)建優(yōu)點(diǎn):代碼簡單。缺點(diǎn):該類無法集成別的類。(2)實現(xiàn)Runnable接口創(chuàng)建優(yōu)點(diǎn):繼承其他類,同一實現(xiàn)該接口的實例可以共享資源。缺點(diǎn):代碼復(fù)雜。5.Java線程的優(yōu)先級設(shè)置遵循什么原則?答:Java線程的優(yōu)先級設(shè)置遵從下述原則:(1)線程創(chuàng)建時,子線程繼承父線程的優(yōu)先級(2)線程創(chuàng)建后,可在程序中通過調(diào)用setPriority()方法改變線程的優(yōu)先級(3)線程的優(yōu)先級是1~10之間的正整數(shù),數(shù)字越大優(yōu)先級越高,默認(rèn)的優(yōu)先級是居中,即為5。6.舉例說明什么叫線程的同步?Java中如何實現(xiàn)線程的同步?答:有一個銀行帳號,存款余額是8000元,用戶A持有信用卡,用戶B持有存折,如果有同一時間都要求取款5000元。我們看會出現(xiàn)什么情況。取款的過程分兩步:(1)取款;(2)更新帳戶余額。用戶A取款5000后,還沒有來得及更新帳戶余額,用戶B搶得線程,又取款5000元(這時帳戶余額還是8000元),然后更新帳戶余額,剩下3000元,用戶B取款完成后,用戶A線程再運(yùn)行,繼續(xù)更新帳戶余額,余額變?yōu)?2000。產(chǎn)生負(fù)數(shù)余額的原因是:取款過程的兩步被分開執(zhí)行。針對這個問題,可以將取款過程的兩個動作鎖定,即放入同步代碼塊中,直到兩步都執(zhí)行完才能允許其它線程執(zhí)行,這就是線程的同步。Java中實現(xiàn)線程的同步方法:常是利用synchronized編寫同步方法和代碼塊。二、操作題1.編寫一個程序,通過繼承Thread創(chuàng)建線程并以此生成兩個線程,每個線程輸出從1到5的數(shù)。程序參考代碼如下:publicclassMyThreadextendsThread{ publicvoidrun(){ try{ for(inti=1;i<6;i++){ System.out.println(i); sleep(2000);} }catch(InterruptedExceptione){}} publicstaticvoidmain(Stringargs[]){ System.out.println("當(dāng)前的線程數(shù):"+Thread.activeCount()); MyThreadthread1=newMyThread(); thread1.start(); System.out.println("當(dāng)前的線程數(shù):"+Thread.activeCount()); MyThreadthread2=newMyThread(); thread2.start(); System.out.println("當(dāng)前的線程數(shù):"+Thread.activeCount()); }}2.設(shè)計7個線程對象,模擬體彩七星彩的開獎程序。提示:七星彩的整個開獎過程需要產(chǎn)生7位開獎號碼,每個開獎號碼的范圍為0-9之間。程序參考代碼略。3.模擬三個老師同時分發(fā)80份學(xué)習(xí)筆記,每個老師相當(dāng)于一個線程。程序參考代碼如下:classTeacherimplementsRunnable{privateintnotes=80;publicvoidrun(){while(true){dispatchNotes();//調(diào)用售票方法if(notes<=0){break;}}}privatesynchronizedvoiddispatchNotes(){if(notes>0){try{Thread.sleep(10);//經(jīng)過的線程休眠10毫秒}catch(InterruptedExceptione){e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"---發(fā)出的筆記"+notes--);}}}publicclassTest06{ publicstaticvoidmain(String[]args){ Teachert=newTeacher(); newThread(t,"語文老師").start(); newThread(t,"數(shù)學(xué)老師").start(); newThread(t,"英語老師").start(); }}4.編寫一個創(chuàng)建三個線程對象的程序。每個線程應(yīng)該輸出一個消息,并且消息后緊跟字符串“消息結(jié)束”。要求:在線程輸出消息后,暫停一秒鐘后才輸出“消息結(jié)束”。程序參考代碼略。第16章習(xí)題參考答案一、簡答題1.簡述TCP與UDP的區(qū)別?答:(1)TCP基

溫馨提示

  • 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

提交評論