![第一行代碼 java章后習(xí)題及綜合測(cè)試題答案_第1頁](http://file4.renrendoc.com/view10/M00/2A/08/wKhkGWWlRjeAOCU9AAHxrviYDoM880.jpg)
![第一行代碼 java章后習(xí)題及綜合測(cè)試題答案_第2頁](http://file4.renrendoc.com/view10/M00/2A/08/wKhkGWWlRjeAOCU9AAHxrviYDoM8802.jpg)
![第一行代碼 java章后習(xí)題及綜合測(cè)試題答案_第3頁](http://file4.renrendoc.com/view10/M00/2A/08/wKhkGWWlRjeAOCU9AAHxrviYDoM8803.jpg)
![第一行代碼 java章后習(xí)題及綜合測(cè)試題答案_第4頁](http://file4.renrendoc.com/view10/M00/2A/08/wKhkGWWlRjeAOCU9AAHxrviYDoM8804.jpg)
![第一行代碼 java章后習(xí)題及綜合測(cè)試題答案_第5頁](http://file4.renrendoc.com/view10/M00/2A/08/wKhkGWWlRjeAOCU9AAHxrviYDoM8805.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第(PAGE1)頁共(NUMPAGES3)頁 附錄2:習(xí)題答案第1章:Java簡(jiǎn)介——自我檢測(cè)(答案)1、填空題1、 Java源程序文件的后綴是*.java,Java字節(jié)碼文件的后綴名稱是*.class。2、 Java程序?qū)崿F(xiàn)可移值性,依靠的是JVM。3、 Java語言的三個(gè)分支是:JAVASE、JAVAME、JAVAEE。4、 Java程序由類組成,如果Java使用publicclass聲明類,則文件名稱必須與類名稱一致。5、 Java執(zhí)行是從main()方法開始執(zhí)行的,此方法的完整定義是publicstaticvoidmain(Stringargs[])。6、 從命名標(biāo)準(zhǔn)上來講,Java類名的每個(gè)單詞的首字母通常要求大寫。7、 當(dāng)使用java命令解釋一個(gè)程序時(shí),一定需要classpath環(huán)境屬性來定位類資源路徑;2、選擇題1、 下面那個(gè)是屬于解釋Java程序所使用到命令?(A) A、 java.exe B、 javac.exe C、 keytool.exe D、 cmd.exe2、 下面的那個(gè)環(huán)境變量java解釋時(shí)所需要的B。 A、 path B、 classpath C、 JAVA_HOME D、TEMP3、 下面那一種開發(fā)方向不屬于Java定義的?C A、 JavaSE B、 JavaEE C、 JavaCE D、JavaME3、判斷題1、 Java語言屬于編譯型的開發(fā)語言。 (×)2、 JavaApplication程序不是由main()方法開始執(zhí)行的。 (×)4、簡(jiǎn)答題1、 簡(jiǎn)述Java實(shí)現(xiàn)可移值性的基本原理。答:Java屬于編譯型和解釋型的編程語言,所有的*.java程序必須編譯為*.class文件之后才可以在電腦上執(zhí)行,而執(zhí)行*.class文件的電腦并不是一臺(tái)真實(shí)的電腦,而是利用軟件和硬件模擬出來的一臺(tái)虛擬電腦,稱為Java虛擬機(jī),而針對(duì)于不同的操作系統(tǒng)平臺(tái),有不同版本的Java虛擬機(jī),即:由Java虛擬機(jī)去適應(yīng)不同的操作系統(tǒng),即:只要Java虛擬機(jī)的支持沒有改變,同一個(gè)*.class可以在不同的平臺(tái)上運(yùn)行。2、 簡(jiǎn)述Java語言的三個(gè)程序分支。答: JAVASE(Java標(biāo)準(zhǔn)版):提供基礎(chǔ)的Java類庫及平臺(tái)支持:JAVAME(Java微型版):提供嵌入式開發(fā)支持:JAVAEE(Java企業(yè)版):提供企業(yè)平臺(tái)支持。3、 簡(jiǎn)述Java中path及classpath的作用。答: PATH:是操作系統(tǒng)的環(huán)境屬性,指的是可以執(zhí)行命令的程序路徑;CLASSPATH:是所有*.class文件的執(zhí)行路徑,java命令執(zhí)行的時(shí)候?qū)⒗么寺窂郊虞d所需要的*.class文件。4、 簡(jiǎn)述Java語言的主要特點(diǎn)。答: Java語言的主要的特點(diǎn)如下:1、 Java語言是一門面向?qū)ο笳Z言,且語法足夠簡(jiǎn)單;2、 Java避免了C/C++之中復(fù)雜的指針關(guān)系,而使用了更為簡(jiǎn)單的引用方式來進(jìn)行內(nèi)存?zhèn)鬟f;3、 Java是為數(shù)不多的支持多線程開發(fā)的編程語言;4、 Java提供了自動(dòng)的垃圾收集機(jī)制,可以定期釋放出無用的垃圾空間;5、 Java語言的安全性較高;6、 Java最大的特點(diǎn)是具備可移植性,即:同一個(gè)程序在不同的操作系統(tǒng)上都可以運(yùn)行。5、 詳細(xì)闡述Java中使用publicclass或class聲明一個(gè)類的區(qū)別及注意事項(xiàng)。答: 使用publicclass定義的類,要求文件名稱和類名稱保持一致,在一個(gè)*.java文件之中只能存在一個(gè)publicclass; 使用class定義的類,文件名稱可以和類名稱不一致,在一個(gè)*.java文件之中可以同時(shí)存在多個(gè)class定義,編譯之后會(huì)產(chǎn)生多個(gè)*.class文件。5、編程題1、 在屏幕上輸出:“我喜歡學(xué)習(xí)Java”的信息。答案:publicclassTestDemo{ publicstaticvoidmain(String[]args){ System.out.println("我喜歡學(xué)習(xí)Java"); }}2、 在屏幕上打印出以下的圖形: ************************************* *********Java程序設(shè)計(jì) ********* *************************************答案:publicclassTestDemo{ publicstaticvoidmain(String[]args){ System.out.println("*************************************"); System.out.println("*********Java程序設(shè)計(jì) *********"); System.out.println("*************************************"); }}第2章 簡(jiǎn)單Java程序——自我檢測(cè)(答案)1、填空題1、 Java中的標(biāo)識(shí)符組成原則:由字母、數(shù)字、下劃線、$所組成,其中不能以數(shù)字開頭,不能是Java的關(guān)鍵字。2、 assert關(guān)鍵字是在JDK1.4時(shí)加入的,enum關(guān)鍵字是在JDK1.5時(shí)加入的。3、 列舉出已經(jīng)知道的5個(gè)關(guān)鍵字:public、static、void、int、double。4、 Java注釋分為以下三種:?jiǎn)涡凶⑨專?/)、多行注釋(/*…*/)、文檔注釋。5、 Java中使用int關(guān)鍵字,可以定義一個(gè)整型數(shù)據(jù)。6、 在一個(gè)Java源文件中定義了3個(gè)類和15個(gè)方法,編譯該Java源文件時(shí)會(huì)產(chǎn)生3個(gè)字節(jié)碼文件,其擴(kuò)展名是*.class。7、 布爾型數(shù)據(jù)類型的關(guān)鍵字是boolean,有true和false兩種取值。8、 整型數(shù)可以采用byte、short、int和long四種類型表示。9、 根據(jù)占用內(nèi)存長(zhǎng)度的不同將浮點(diǎn)型分為float和double兩種。10、 Java程序結(jié)構(gòu)分為:順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)三種。11、 邏輯表達(dá)式:true&&false&&true的結(jié)果是false。12、 邏輯表達(dá)式:!true||false的結(jié)果是false。13、 在方法中可以使用return語句來結(jié)束方法的執(zhí)行。14、 方法中的void關(guān)鍵字用來表示方法不返回任何值。2、選擇題1、 下面那些標(biāo)識(shí)符是正確的D。 A、 class B、 helloworld C、 123$temp D、 Demo2、 下面那些關(guān)鍵字是Java中未使用到的關(guān)鍵字A、B(多選)。 A、 const B、 goto C、 int D、 assert3、 publicstaticvoidmain方法的參數(shù)描述是:A。 A、 Stringargs[] B、 int[]args C、 Stringsargs[] D、 Stringargs4、 下面說法正確的是C。 A、 Java程序的源文件名稱與主類(puublicclass)的名稱相同,后綴可以是.java或.txt等。 B、 JDK的編譯命令是java。 C、 一個(gè)java源文件編譯后可能產(chǎn)生多個(gè)class文件。 D、 在命令行編譯好的字節(jié)碼文件,只需在命令行直接鍵入程序名即可運(yùn)行該程序。5、 下面說法不正確的是A。 A、 Java語言是面向?qū)ο蟮?、解釋?zhí)行的網(wǎng)絡(luò)編程語言 B、 Java語言具有可移植性,是與平臺(tái)無關(guān)的編程語言。 C、 Java語言可對(duì)內(nèi)存垃圾自動(dòng)收集。 D、 Java語言執(zhí)行時(shí)需要Java的運(yùn)行環(huán)境。6、 下面A不是Java的關(guān)鍵字。 A、 integer B、 double C、 float D、 char7、 在Java中,字節(jié)數(shù)據(jù)類型的關(guān)鍵字和默認(rèn)值是A。 A、byte和0 B、 byte和1 C、 boolean和true D、 boolean和false8、 3.15E2表示的數(shù)據(jù)是C。 A、 3.15×2 B、 3.15×10-2 C、 3.15×102 D、 0.315×10-29、 程序System.out.println("1+1="+1+1);的輸出結(jié)果是C。 A、 1 B、 1+1=2 C、 1+1=11 D、 210、 程序System.out.println(10/3);的輸出結(jié)果是B。 A、 1 B、 3 C、 3.3 D、 3.3333311、 執(zhí)行下面的語句后,a、b、c的值分別是C。 inta=2; intb=(a++)*3; intc=(++a)*3; A、 2、6、6 B、 4、9、9 C、 4、6、12 D、 3、9、912、 以下的B能正確表示Java語言中的一個(gè)整型常量。 A、 35.d B、 -20 C、 1,234 D、 "123"13、 下面的數(shù)據(jù)類型D是float型 A、 33.8 B、 129 C、 89L D、 8.6F14、 下列關(guān)于自動(dòng)類型轉(zhuǎn)換的說法中,正確的一個(gè)是B。 A、 int類型數(shù)據(jù)可以自動(dòng)轉(zhuǎn)換為char類型數(shù)據(jù) B、 char類型數(shù)據(jù)可以被自動(dòng)轉(zhuǎn)換為int類型數(shù)據(jù) C、 boolean類型數(shù)據(jù)不可以做自動(dòng)類型轉(zhuǎn)換,但是可以做強(qiáng)制轉(zhuǎn)換 D、 long類型數(shù)據(jù)可以被自動(dòng)轉(zhuǎn)換為short類型數(shù)據(jù)15、 一個(gè)方法在定義過程中又調(diào)用自身,這種方法稱為B。 A、 構(gòu)造方法 B、 遞歸方法 C、 成員方法 D、 抽象方法3、判斷題1、 變量的內(nèi)容可以修改,常量的內(nèi)容不可修改。 ( √)2、 goto是Java中未使用到的關(guān)鍵字。 ( √)3、 enum關(guān)鍵字是在JDK1.4版本中增加的。 ( ×)4、 使用publicclass定義的類,文件名稱可以與類名稱不一致。 ( ×)5、 主方法編寫:publicvoidmain(Stringarg)。 ( ×)6、 字符$不能作Java標(biāo)識(shí)符的第一個(gè)字符。 ( ×)7、 System.out.println()輸出后是不加換行的,而System.out.print()輸出后是加換行的。 ( ×)8、 使用break語句可以跳出一次循環(huán)。 ( ×)9、 byte的取值范圍是:0~255。 ( ×)10、 int和double進(jìn)行加法操作,int會(huì)自動(dòng)轉(zhuǎn)換為double類型。 ( ×)11、 使用“&”操作時(shí),如果第一個(gè)條件是false,則后續(xù)的條件都不再判斷。 ( ×)12、 使用“&&”操作時(shí),如果第一個(gè)條件是false,則后續(xù)的條件都不再判斷。 ( √)13、 使用“|”操作時(shí),如果第一個(gè)條件是true,則后續(xù)的條件都不再判斷。 ( ×)14、 使用“||”操作時(shí),如果第一個(gè)條件是true,則后續(xù)的條件都不再判斷。 ( √)15、 定義多個(gè)同名方法時(shí),可以依靠返回值區(qū)別同名方法。 ( ×)4、簡(jiǎn)答題1、 請(qǐng)解釋常量與變量的區(qū)別?答: 常量就是一個(gè)固定的數(shù)值。是不可改變的,例如:數(shù)字1、2就是一個(gè)整型的常量。 變量是利用聲明的方式,將內(nèi)存中的某個(gè)內(nèi)存塊保留下來以供程序使用??梢月暶鞯臄?shù)據(jù)類型為整型、字符型、浮點(diǎn)型或是其他數(shù)據(jù)類型,作為變量的保存之用。變量在程序語言中扮演了最基本的角色。變量可以用來存放數(shù)據(jù),而使用變量之前必須先聲明它的數(shù)據(jù)類型。2、 解釋方法重載的概念,并舉例說明。答: 方法重載指的是多個(gè)方法的方法名稱相同,但是方法中的參數(shù)類型及個(gè)數(shù)不同。 代碼說明: publicstaticintadd(intx,inty){ returnx+y; } publicstaticintadd(intx,inty,intz){ returnx+y+z; } publicstaticdoubleadd(doublex,doubley){ returnx+y; }5、編程題1、 打印出100~1000范圍內(nèi)的所有“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個(gè)“水仙花數(shù)”,因?yàn)?53=1的三次方+5的三次方+3的三次方。publicclassTestDemo{ publicstaticvoidmain(String[]args){ inti,j,k; for(intx=100;x<1000;x++){ i=x/100; //計(jì)算百位數(shù)字 j=(x/10)%10; //計(jì)算十位數(shù)字 k=x%10; //計(jì)算個(gè)位數(shù)字 if(x==i*i*i+j*j*j+k*k*k){ System.out.print(x+"、"); } } }}程序運(yùn)行結(jié)果:153、370、371、407、2、 通過代碼完成兩個(gè)整數(shù)內(nèi)容的交換。實(shí)現(xiàn)一:引用第三方變量實(shí)現(xiàn)二:利用數(shù)學(xué)計(jì)算完成publicclassTestDemo{ publicstaticvoidmain(String[]args){ intx=10; inty=20; inttemp=x; x=y; y=temp; System.out.println("x="+x); System.out.println("y="+y); }}publicclassTestDemo{ publicstaticvoidmain(String[]args){ intx=10; inty=20; x+=y; y=x-y; x=x-y; System.out.println("x="+x); System.out.println("y="+y); }}程序運(yùn)行結(jié)果:x=20y=103、 判斷某數(shù)能否被3,5,7同時(shí)整除。publicclassTestDemo{ publicstaticvoidmain(String[]args){ intdata=105; if(data%3==0&&data%5==0&&data%7==0){ System.out.println(data+"可以同時(shí)被3、5、7整除。"); }else{ System.out.println(data+"不可以同時(shí)被3、5、7整除。"); } }}程序運(yùn)行結(jié)果:105可以同時(shí)被3、5、7整除。4、 編寫程序,分別利用while循環(huán)、do…while循環(huán)和for循環(huán)求出100~200的累加和。實(shí)現(xiàn)一:使用while循環(huán)publicclassTestDemo{ publicstaticvoidmain(String[]args){ intsum=0; intx=100; while(x<=200){ sum+=x; x++; } System.out.println("累加結(jié)果:"+sum); }}實(shí)現(xiàn)二:使用do…while循環(huán)publicclassTestDemo{ publicstaticvoidmain(String[]args){ intsum=0; intx=100; do{ sum+=x; x++; }while(x<=200); System.out.println("累加結(jié)果:"+sum); }}實(shí)現(xiàn)三:使用for循環(huán)publicclassTestDemo{ publicstaticvoidmain(String[]args){ intsum=0; for(intx=100;x<=200;x++){ sum+=x; } System.out.println("累加結(jié)果:"+sum); }}第3章、面向?qū)ο螅ɑA(chǔ))——自我檢測(cè)(答案)1、填空題1、 面向?qū)ο笥心侨筇卣鳎悍庋b、繼承、多態(tài)。2、 類由屬性和方法組成。3、 new運(yùn)算符的作用是根據(jù)對(duì)象的類型分配內(nèi)存空間。當(dāng)對(duì)象擁有內(nèi)存空間時(shí),會(huì)自動(dòng)調(diào)用類中的構(gòu)造方法為對(duì)象實(shí)例化。4、 使用private修飾的類成員稱為私有成員。私有成員只能在類中使用。5、 構(gòu)造方法的名稱與類名稱相同。6、 private關(guān)鍵字可以讓類中的屬性和方法對(duì)外部不可見。7、 this關(guān)鍵字可以調(diào)用本類中的屬性、方法、構(gòu)造方法,調(diào)用構(gòu)造方法時(shí)必須放在構(gòu)造方法的首行。8、 在Java中數(shù)組排序的方法是java.util.Arrays.sort()。2、選擇題1、 如果希望方法直接通過類名稱訪問,在定義時(shí)要使用的修飾符是A。 A、 static B、 final C、 abstract D、 this2、 如果類中沒有定義構(gòu)造方法,系統(tǒng)會(huì)提供一個(gè)默認(rèn)的構(gòu)造方法。默認(rèn)構(gòu)造方法的特點(diǎn)是C。 A、 無參數(shù)有操作 B、 有參數(shù)無操作 C、 即無參數(shù)也無任何操作 D、 有參數(shù)有操作3、 有一個(gè)類Demo,對(duì)與其構(gòu)造方法的正確聲明是B。 A、 voidDemo(intx){…} B、 Demo(intx){…} C、 DemoDemo(intx){…} D、 intDemo(){}4、 以下關(guān)于面向?qū)ο蟾拍畹拿枋鲋?,不正確的一項(xiàng)是C。 A、 在現(xiàn)實(shí)生活中,對(duì)象是指客觀世界的實(shí)體 B、 程序中的對(duì)象就是現(xiàn)實(shí)生活中的對(duì)象 C、 在程序中,對(duì)象是通過一種抽象的數(shù)據(jù)類型來描述的,這種抽象數(shù)據(jù)類型稱為類(class) D、 在程序中,對(duì)象是一組變量和相關(guān)方法的集合5、 下列那一項(xiàng)不屬于面向?qū)ο蟪绦蛟O(shè)計(jì)的基本要素?D A、 類 B、 對(duì)象 C、 方法 D、 安全6、下列程序的執(zhí)行結(jié)果是ApublicclassTestDemo{ publicvoidfun(){ staticinti=0; i++; System.out.println(i); } publicstaticvoidmain(Stringargs[]){ Demod=newDemo(); d.fun(); }} A、 編譯錯(cuò)誤 B、 0 C、 1 D、 運(yùn)行成功,但不輸出7、 順序執(zhí)行下列程序語句后,則b的值是C。 Stringstr="Hello"; Stringb=str.substring(0,2); A、 Hello B、 hello C、 He D、 null3、判斷題1、 沒有實(shí)例化的對(duì)象不能使用。 ( √ )2、 不可以為類定義多個(gè)構(gòu)造方法。 ( × )3、 使用static聲明的方法可以調(diào)用非static聲明的方法。 ( × )4、 非static聲明的方法可以調(diào)用static聲明的屬性或方法。 ( √ )5、 String對(duì)象可以使用==進(jìn)行內(nèi)容的比較。 ( × )6、 垃圾是指無用的內(nèi)存空間,會(huì)被垃圾收集機(jī)制回收。 ( √ )7、 構(gòu)造方法可以有返回值類型的聲明。 ( × )8、 匿名對(duì)象是指使用一次的對(duì)象,使用之后將等待被垃圾回收。 ( √ )9、 使用static定義的內(nèi)部類就成為外部類。 ( √ )10、 多個(gè)實(shí)例化對(duì)象之間不會(huì)互相影響,因?yàn)楸4嬖诓煌膬?nèi)存區(qū)域之中。 ( √ )4、簡(jiǎn)答題1、 String類的操作特點(diǎn)。答: String類的對(duì)象有兩種實(shí)例化方式: |-方式一:直接賦值,只開辟一塊堆內(nèi)存空間,并且對(duì)象可以入池; |-方式二:構(gòu)造方法,開辟兩塊堆內(nèi)存空間,有一塊將稱為垃圾,不會(huì)自動(dòng)入池,使用intern()方法手工入池; String對(duì)象的比較方法: |-==:比較的是兩個(gè)字符串對(duì)象的內(nèi)存地址數(shù)值; |-equals():字符串內(nèi)容比較; 字符串對(duì)象一旦聲明,則內(nèi)容不可改變,改變的只能是字符串對(duì)象的地址指向。2、 簡(jiǎn)述垃圾對(duì)象的產(chǎn)生。答: 垃圾指的是一塊無用的引用內(nèi)存,當(dāng)將變量設(shè)置為null或者長(zhǎng)時(shí)間不使用時(shí),就將成為垃圾。3、 static方法如何調(diào)用?非static方法如何調(diào)用?答: static方法可以使用類名稱或?qū)嵗瘜?duì)象調(diào)用,而非static方法只能依靠實(shí)例化對(duì)象才可以調(diào)用。4、 類與對(duì)象的關(guān)系是什么?如何創(chuàng)建及使用對(duì)象?答: 類規(guī)定了對(duì)象所具有的屬性及行為(方法),類只有通過產(chǎn)生對(duì)象才可以分配屬性或者是調(diào)用方法,對(duì)象的創(chuàng)建依靠關(guān)鍵字new創(chuàng)建。5、 舉例說明子類對(duì)象的實(shí)例化過程。答: 當(dāng)通過關(guān)鍵字new實(shí)例化子類對(duì)象時(shí),會(huì)默認(rèn)調(diào)用父類的無參構(gòu)造方法,為父類對(duì)象實(shí)例化,而后才會(huì)調(diào)用子類的構(gòu)造方法,為子類對(duì)象實(shí)例化。7、 簡(jiǎn)述this與super關(guān)鍵字的區(qū)別。答: this和super都可以調(diào)用類中的屬性、方法、構(gòu)造方法,但是this調(diào)用的是本類操作,而super是由子類調(diào)用父類操作。5、編程題1、 編寫并測(cè)試一個(gè)代表地址的Address類,地址信息由:國(guó)家,省份,城市,街道,郵編組成,并可以返回完整的地址信息。classAddress{ privateStringnational; privateStringprovincial; privateStringcity; privateStringstreet; privateStringzipcode; publicAddress(){ } publicAddress(Stringnational,Stringprovincial,Stringcity, Stringstreet,Stringzipcode){ super(); this.national=national; vincial=provincial; this.city=city; this.street=street; this.zipcode=zipcode; } publicStringtoString(){ return"國(guó)家:"+this.national+",省份:"+vincial+",城市:" +this.city+",街道:"+this.street+",郵政編碼:"+this.zipcode; } //setter、getter略}publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ Addressad=newAddress("中國(guó)","北京","北京市","MLDN","100088"); System.out.println(ad); }}程序運(yùn)行結(jié)果:國(guó)家:中國(guó),省份:北京,城市:北京市,街道:MLDN,郵政編碼:1000882、 定義并測(cè)試一個(gè)代表員工的Employee類。員工屬性包括“編號(hào)”、“姓名”、“基本薪水”、“薪水增長(zhǎng)額”;還包括“計(jì)算增長(zhǎng)后的工資總額”。的操作方法。classEmployee{ privateintempno; //雇員編號(hào) privateStringename; //雇員姓名 privatedoublesal; //基本工資 privatedoublerate; //工資增長(zhǎng)額 publicEmployee(){ } publicEmployee(intempno,Stringename,doublesal,doublerate){ super(); this.empno=empno; this.ename=ename; this.sal=sal; this.rate=rate; } publicStringtoString(){ return"雇員編號(hào):"+this.empno+",雇員姓名:"+this.ename+",基本工資:"+this.sal; } publicvoidgrowthin(){ //增長(zhǎng)薪水 this.sal=this.sal*this.rate; } //setter、getter略}publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ Employeeemp=newEmployee(7369,"SMITH",1000,1.5); emp.growthin(); //工資增長(zhǎng) System.out.println(emp); }}程序運(yùn)行結(jié)果:雇員編號(hào):7369,雇員姓名:SMITH,基本工資:1500.03、 編寫程序在將字符串“wantyoutoknowonething”,統(tǒng)計(jì)出字母“n”和字母“o”的出現(xiàn)次數(shù)。publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ Stringstr="wantyoutoknowonething"; //定義字符串 intsum=0; while(str.indexOf("n")!=-1){ //是否還有字母n sum++; //數(shù)據(jù)統(tǒng)計(jì)量增加 str=str.substring(str.indexOf("n")+1);//改變字符串內(nèi)容 } System.out.println("字母n的出現(xiàn)次數(shù):"+sum); }}程序運(yùn)行結(jié)果:字母n的出現(xiàn)次數(shù):44 設(shè)計(jì)一個(gè)Dog類,有名字、顏色、年齡等屬性,定義構(gòu)造方法來初始化類的這些屬性,定義方法輸出Dog信息。編寫應(yīng)用程序使用Dog類。classDog{ privateStringname; privateStringcolor; privateintage; publicDog(){ } publicDog(Stringname,Stringcolor,intage){ super(); =name; this.color=color; this.age=age; } publicStringtoString(){ return"狗的名字:"++",狗的顏色:"+this.color+",狗的年齡:"+this.age; } //setter、getter略}publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ Dogdog=newDog("金毛","金黃色",3); System.out.println(dog); }}程序運(yùn)行結(jié)果:狗的名字:金毛,狗的顏色:金黃色,狗的年齡:35、 字符串操作:· 從字符串“MLDN中心Java技術(shù)學(xué)習(xí)班20130214”中提取開班日期。publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ Stringstr="MLDN中心Java技術(shù)學(xué)習(xí)班20130214"; System.out.println(str.substring(str.indexOf("20130214"))); }}程序運(yùn)行結(jié)果:20130214·將“MLDNJAVA高端技術(shù)培訓(xùn)”字符串中的“Java”替換為“JAVAEE”。publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ Stringstr="MLDNJAVA高端技術(shù)培訓(xùn)"; System.out.println(str.replaceAll("Java".toUpperCase(),"JAVAEE")); }}程序運(yùn)行結(jié)果:MLDNJAVAEE高端技術(shù)培訓(xùn)· 取出“Java技術(shù)學(xué)習(xí)班20130214”中的第八個(gè)字符。publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ Stringstr="Java技術(shù)學(xué)習(xí)班20130214"; System.out.println(str.charAt(8)); }}程序運(yùn)行結(jié)果:班·清除“Java技術(shù)學(xué)習(xí)班20130214”中的所有‘0’publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ Stringstr="Java技術(shù)學(xué)習(xí)班20130214"; System.out.println(str.replaceAll("0","")); }}程序運(yùn)行結(jié)果:Java技術(shù)學(xué)習(xí)班213214·從任意給定的身份證號(hào)碼中提取此人的出生日期。publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ Stringstr="1101051976091900520"; System.out.println(str.substring(6,14)); }}程序運(yùn)行結(jié)果:197609196、 編寫一個(gè)銀行帳戶類,類的構(gòu)成包括: ·數(shù)據(jù)成員: |-用戶的帳戶名稱、用戶的帳戶余額; ·方法包括: |-開戶(設(shè)置帳戶名稱,及余額),利用構(gòu)造方法完成 ·查詢余額classAccount{ privateStringname; privatedoublebalance; publicAccount(){ } publicAccount(Stringname,doublebalance){ super(); =name; this.balance=balance; } publicStringtoString(){ return"賬戶名稱:"++",余額:"+this.balance; } publicdoublegetBalance(){ returnbalance; } //setter、getter略}publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ Accountacc=newAccount("張三",5000.0); System.out.println(acc); System.out.println("賬戶余額:"+acc.getBalance()); }}程序運(yùn)行結(jié)果:賬戶名稱:張三,余額:5000.0賬戶余額:5000.0第4章、面向?qū)ο螅ǜ呒?jí))——自我檢測(cè)(答案)1、填空題1、 Java中通過extends關(guān)鍵字實(shí)現(xiàn)繼承。2、 一個(gè)類只能繼承一個(gè)父類,但能實(shí)現(xiàn)多個(gè)接口。3、 Object類是所有類的父類,該類中判斷兩個(gè)對(duì)象是否相等的方法是publicbooleanequals(Objectoth),取得對(duì)象完整信息的方法是publicStringtoString()。4、 Integer類是對(duì)int基本數(shù)據(jù)類型的封裝。Float類是對(duì)float基本數(shù)據(jù)類型的封裝。Double類是對(duì)double基本數(shù)據(jù)類型的封裝。字符類Character是對(duì)char基本數(shù)據(jù)類型的封裝。5、 當(dāng)子類中定義的方法與父類方法同名且參數(shù)類型及個(gè)數(shù)、返回值類型相同時(shí),稱子類方法覆寫父類方法,子類默認(rèn)使用本類已經(jīng)覆寫方法,使用父類的同名方法,必須使用super關(guān)鍵字說明。6、 當(dāng)子類定義的成員變量與父類的成員變量同名時(shí),稱子類覆蓋父類的成員變量,子類默認(rèn)使用本類屬性。使用父類的同名成員變量,必須用super關(guān)鍵字說明。7、 如果子類定義了構(gòu)造方法,在創(chuàng)建子類對(duì)象時(shí)首先默認(rèn)調(diào)用父類無參構(gòu)造方法,然后再本類的構(gòu)造方法。2、選擇題1、 不能直接使用new創(chuàng)建對(duì)象的類是B。 A、 靜態(tài)類 B、 抽象類 C、 最終類 D、 公有類2、 為類定義多個(gè)名稱相同、但參數(shù)的類型或個(gè)數(shù)不同的方法的做法稱為B。 A、 方法重載 B、 方法覆寫 C、 方法繼承 D、 方法重用3、 定義接口的關(guān)鍵字是C。 A、 extends B、 class C、 interface D、 public4、 現(xiàn)在有兩個(gè)類A、B,以下描述中表示B繼承自A的是D。 A、 classAextendsB B、 classBimplementsA C、 classAimplements D、 classBextendsA5、 下面關(guān)于子類調(diào)用父類構(gòu)造方法的描述正確的是C。 A、 子類定義了自己的構(gòu)造方法,就不會(huì)調(diào)用父類的構(gòu)造方法。 B、 子類必須通過super關(guān)鍵字調(diào)用父類有參的構(gòu)造方法。 C、 如果子類的構(gòu)造方法沒有通過super調(diào)用父類的構(gòu)造方法,那么子類會(huì)先調(diào)用父類中無參構(gòu)造方法,之后再調(diào)用子類自己的構(gòu)造方法。 D、 創(chuàng)建子類對(duì)象時(shí),先調(diào)用子類自己的構(gòu)造方法,讓后再調(diào)用父類的構(gòu)造方法。6、 假設(shè)類X是類Y的父類,下列聲明對(duì)象x的語句中不正確的是D。 A、 Xx=newX(); B、 Xx=newY(); C、 Yx=newY(); D、 Yx=newX();7、 編譯并運(yùn)行下面的程序,結(jié)果B。publicclassA{ publicstaticvoidmain(Stringargs[]){ Bb=newB(); b.test(); } voidtest(){ System.out.print("A"); }}classBextendsA{ voidtest(){ super.test(); System.out.println("B"); }} A、 產(chǎn)生編譯錯(cuò)誤 B、 代碼可以編譯運(yùn)行,并輸出結(jié)果:AB C、 代碼可以編譯運(yùn)行,但沒有輸出 D、 編譯沒有錯(cuò)誤,但會(huì)運(yùn)行時(shí)會(huì)產(chǎn)生異常8、 編譯運(yùn)行下面的程序,結(jié)果是A。publicclassA{ publicstaticvoidmain(Stringargs[]){ Bb=newB(); b.test(); } publicvoidtest(){ System.out.print("A"); }}classBextendsA{ voidtest(){ super.test(); System.out.println("B"); }} A、 產(chǎn)生編譯錯(cuò)誤,因?yàn)轭怋覆蓋類A的方法test()時(shí),降低了其訪問控制的級(jí)別。 B、 代碼可以編譯運(yùn)行,并輸出結(jié)果:AB C、 代碼可以編譯運(yùn)行,但沒有輸出 D、 代碼可以編譯運(yùn)行,并輸出結(jié)果:A9、 下面B修飾符所定義的方法必須被子類所覆寫。 A、 final B、 abstract C、 static D、 interface10、 下面A修飾符所定義的方法不能被子類所覆寫。 A、 final B、 abstract D、 static D、 interface11、下面的程序編譯運(yùn)行的結(jié)果是ApublicclassAimplementsB{ publicstaticvoidmain(Stringargs[]){ intm,n; Aa=newA(); m=a.K; n=B.K; System.out.println(m+","+n); }}interfaceB{ intK=5;} A、 5,5 B、 0,5 C、 0,0 D、 編譯程序產(chǎn)生編譯結(jié)果12、 下面關(guān)于接口的說法中不正確的是C。 A、 接口所有的方法都是抽象的 B、 接口所有的方法一定都是public類型 C、 用于定義接口的關(guān)鍵字是implements D、 接口是Java中的特殊類,包含全局常量和抽象方法13、 下面關(guān)于Java的說法不正確的是A A、 abstract和final能同時(shí)修飾一個(gè)類 B、 抽象類不光可以做父類,也可以做子類 C、 抽象方法不一定聲明在抽象類中,也可以在接口中 D、 聲明為final的方法不能在子類中覆寫3、判斷題1、 final聲明的類可以有子類。 ( × )2、 一個(gè)類繼承了抽象類,則抽象類中的抽象方法需要在其子類中覆寫。 ( √ )3、 final類型的變量是常量,其內(nèi)容不可改變。 ( √ )4、 一個(gè)類不能即是子類又是父類。 ( √ )5、 子類只能繼承父類的成員,但不能修改父類成員。 ( × )6、 Java語言只支持單繼承,不支持多繼承。 ( √ )7、 子類可以繼承父類的所有成員。 ( √ )8、 一個(gè)接口可以繼承一個(gè)抽象類。 ( × )9、 一個(gè)接口可以同時(shí)繼承多個(gè)接口。 ( √ )10、在程序中this和super調(diào)用構(gòu)造方法時(shí)可以同時(shí)出現(xiàn)。 ( × )4、簡(jiǎn)答題1、 簡(jiǎn)述this與super關(guān)鍵字的區(qū)別。答: this和super都可以調(diào)用類中的屬性、方法、構(gòu)造方法,但是this調(diào)用的是本類操作,而super是由子類調(diào)用父類操作。2、 簡(jiǎn)述方法的重載與覆寫的區(qū)別。答: 方法重載是發(fā)生在一個(gè)類之中,方法名稱相同、參數(shù)的類型及個(gè)數(shù)不同,不受權(quán)限的限制。而覆寫是發(fā)生在繼承關(guān)系之中,子類定義了和父類定義了方法名稱相同、參數(shù)類型及個(gè)數(shù)、返回值類型完全相同的方法時(shí)所發(fā)生的操作,在子類覆寫父類方法時(shí),被覆寫的方法不能擁有比父類更嚴(yán)格的訪問權(quán)限。3、 在已有類的基礎(chǔ)上派生新的類有什么好處?答: 擴(kuò)充已有類的功能,并且利用方法的覆寫擴(kuò)充已有方法的功能。4、 如何區(qū)分子類和父類?子類可以繼承父類的那些內(nèi)容?答: 子類使用extends繼承父類或使用implements實(shí)現(xiàn)多個(gè)接口,子類可以繼承父類中的全部?jī)?nèi)容,但是對(duì)于私有操作屬于隱式繼承,而非私有操作屬于顯式繼承。5、 什么是多態(tài)?實(shí)現(xiàn)都態(tài)的方法有那些?答: 多態(tài)是面向?qū)ο蟮淖詈笠粋€(gè)主要特征,它本身主要分為兩個(gè)方面: ·方法的多態(tài)性:重載與覆寫 |-重載:同一個(gè)方法名稱,根據(jù)不同的參數(shù)類型及個(gè)數(shù)可以完成不同的功能; |-覆寫:同一個(gè)方法,根據(jù)操作的子類不同,所完成的功能也不同。 ·對(duì)象的多態(tài)性:父子類對(duì)象的轉(zhuǎn)換。 |-向上轉(zhuǎn)型:子類對(duì)象變?yōu)楦割悓?duì)象,格式:父類父類對(duì)象=子類實(shí)例,自動(dòng); |-向下轉(zhuǎn)型:父類對(duì)象變?yōu)樽宇悓?duì)象,格式:子類子類對(duì)象=(子類)父類實(shí)例,強(qiáng)制;6、 接口有那些特征?如何定義和實(shí)現(xiàn)接口。答: 接口之中全部由全局常量及抽象方法所組成,一個(gè)類可以同時(shí)實(shí)現(xiàn)多個(gè)接口,在Java中使用interface定義接口,子類使用implements實(shí)現(xiàn)接口。7、 接口和抽象類有那些區(qū)別?答: 抽象類及接口區(qū)別如下。No.區(qū)別抽象類接口1定義關(guān)鍵字abstractclassinterface2組成常量、變量、抽象方法、普通方法、構(gòu)造方法全局常量、抽象方法3權(quán)限可以使用各種權(quán)限只能是public4關(guān)系一個(gè)抽象類可以實(shí)現(xiàn)多個(gè)接口接口不能夠繼承抽象類,卻可以繼承多接口5使用子類使用extends繼承抽象類子類使用implements實(shí)現(xiàn)接口抽象類和接口的對(duì)象都是利用對(duì)象多態(tài)性的向上轉(zhuǎn)型,進(jìn)行接口或抽象類的實(shí)例化操作6設(shè)計(jì)模式模板設(shè)計(jì)模式工廠設(shè)計(jì)模式、代理設(shè)計(jì)模式7局限一個(gè)子類只能夠繼承一個(gè)抽象類一個(gè)子類可以實(shí)現(xiàn)多個(gè)接口8、 簡(jiǎn)述基本數(shù)據(jù)類型的自動(dòng)裝箱及自動(dòng)拆箱操作。答: 在JDK1.5之后,基本數(shù)據(jù)類型可以采用直接賦值的方式為包裝類進(jìn)行對(duì)象的實(shí)例化操作,而包裝類的對(duì)象也可以通過直接賦值的方式變回基本數(shù)據(jù)類型。5、編程題1、 定義一個(gè)ClassName接口,接口中只有一個(gè)抽象方法getClassName()。設(shè)計(jì)一個(gè)類Company,該類實(shí)現(xiàn)接口ClassName中的方法getClassName(),功能是獲取該類的類名稱。編寫應(yīng)用程序使用Company類。interfaceClassName{ publicStringgetClassName();}classCompanyimplementsClassName{ publicStringgetClassName(){ return"Company"; }}publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ ClassNamename=newCompany(); System.out.println(name.getClassName()); }}程序運(yùn)行結(jié)果:Company2、 建立一個(gè)人類(Person)和學(xué)生類(Student)功能要求:A、 Person中包含4個(gè)保護(hù)型的數(shù)據(jù)成員name、address、sex、age分別為字符串,字符串,字符及整型。表示:姓名、地址、性別和年齡。一個(gè)四參構(gòu)造方法,一個(gè)無參構(gòu)造方法,及一個(gè)輸出方法用于顯示四種屬性。 B、 Student繼承Person,并增加輸出成員math、english存放數(shù)學(xué)和英語成績(jī)。一個(gè)六參構(gòu)造方法,一個(gè)兩參構(gòu)造方法,一個(gè)無參構(gòu)造方法,重寫輸出方法用于顯示全部六種種屬性.classPerson{ privateStringname; privateStringaddress; privatecharsex; privateintage; publicPerson(){ } publicPerson(Stringname,Stringaddress,charsex,intage){ super(); =name; this.address=address; this.sex=sex; this.age=age; } publicStringtoString(){ return"姓名:"++",地址:"+this.address+",性別:"+this.sex +",年齡:"+this.age; } //setter、getter略}classStudentextendsPerson{ privatedoublemath; privatedoubleenglish; publicStudent(){ } publicStudent(Stringname,Stringaddress,charsex,intage,doublemath, doubleenglish){ super(name,address,sex,age); this.math=math; this.english=english; } publicStringtoString(){ returnsuper.toString()+",數(shù)學(xué)成績(jī):"+this.math+",英語成績(jī):"+this.english; } //setter、getter略}publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ Studentstu=newStudent("張三","北京西城區(qū)甲11號(hào)德外大街德勝科技園美江大廈A座-6層",'男',25,90.0,99.0); System.out.println(stu); }}程序運(yùn)行結(jié)果:姓名:張三,地址:北京西城區(qū)甲11號(hào)德外大街德勝科技園美江大廈A座-6層,性別:男,年齡:25,數(shù)學(xué)成績(jī):90.0,英語成績(jī):99.03、 定義員工類,具有姓名,年齡,性別屬性,并具有構(gòu)造方法,顯示數(shù)據(jù)方法,定義管理層類,繼承員工類,并有自己的屬性:職務(wù),年薪。定義職員類,繼承員工類,并有自己的屬性:所屬部門,月薪。classEmployee{ privateStringname; privateintage; privatecharsex; publicEmployee(){ } publicEmployee(Stringname,intage,charsex){ super(); =name; this.age=age; this.sex=sex; } publicStringtoString(){ return"雇員姓名:"++",年齡:"+this.age+",性別:"+this.sex; } //setter、getter略}classManagerextendsEmployee{ privateStringjob; privatedoubleincome; publicManager(){ } publicManager(Stringname,intage,charsex,Stringjob,doubleincome){ super(name,age,sex); this.job=job; this.income=income; } publicStringtoString(){ returnsuper.toString()+",職位:"+this.job+",年薪:"+this.income; } //setter、getter略}classStaffextendsEmployee{ privateStringdept; privatedoublesalary; publicStaff(){ } publicStaff(Stringname,intage,charsex,Stringdept,doublesalary){ super(name,age,sex); this.dept=dept; this.salary=salary; } publicStringtoString(){ returnsuper.toString()+",部門:"+this.dept+",月薪:"+this.salary; } //setter、getter略}publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ Employeeea=newManager("張三",30,'男',"總監(jiān)",200000.0); Employeeeb=newStaff("李四",25,'女',"業(yè)務(wù)部",1500.0); System.out.println(ea); System.out.println(eb); }}程序運(yùn)行結(jié)果:雇員姓名:張三,年齡:30,性別:男,職位:總監(jiān),年薪:200000.0雇員姓名:李四,年齡:25,性別:女,部門:業(yè)務(wù)部,月薪:1500.04、 定義類Shape表示一般二維圖形。Shape具有抽象方法area和perimeter,分別計(jì)算形狀的面積和周長(zhǎng)。試定義一些二維形狀類(如矩形、三角形、圓形等),這些類均為Shape類的子類。abstractclassShape{ publicabstractdoublearea(); publicabstractdoubleperimeter();}classRectangleextendsShape{ //矩形 privatedoublewide; //寬 privatedoublelongs; //長(zhǎng) publicRectangle(){ } publicRectangle(doublewide,doublelongs){ super(); this.wide=wide; this.longs=longs; } publicdoublearea(){ returnthis.longs*this.wide; } publicdoubleperimeter(){ return(this.longs+this.wide)*2; }}classTriangleextendsShape{ //三角形 privatedoubleedgea; //邊長(zhǎng) privatedoubleedgeb; //邊長(zhǎng) privatedoubleedgec; //邊長(zhǎng) publicTriangle(){ } publicTriangle(doubleedgea,doubleedgeb,doubleedgec){ super(); this.edgea=edgea; this.edgeb=edgeb; this.edgec=edgec; } publicdoublearea(){ returnthis.edgea*this.edgeb/2; } publicdoubleperimeter(){ returnthis.edgea+this.edgeb+this.edgec; }}classRoundextendsShape{ //圓形 privatedoubleradius; //半徑 publicRound(){ } publicRound(doubleradius){ super(); this.radius=radius; } publicdoublearea(){ returnthis.radius*this.radius*Math.PI; } publicdoubleperimeter(){ returnthis.radius*2*Math.PI; }}publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ Shaperectangle=newRectangle(10.5,20.6); Shapetriangle=newTriangle(10.1,20.2,30.3); Shaperound=newRound(30.3); System.out.println("矩形面積:"+rectangle.area()+",矩形周長(zhǎng):"+rectangle.perimeter()); System.out.println("三角形面積:"+triangle.area()+",三角形周長(zhǎng):"+triangle.perimeter()); System.out.println("圓形面積:"+round.area()+",圓形周長(zhǎng):"+round.perimeter()); }}程序運(yùn)行結(jié)果:矩形面積:216.3,矩形周長(zhǎng):62.2三角形面積:102.00999999999999,三角形周長(zhǎng):60.599999999999994圓形面積:2884.2647993342534,圓形周長(zhǎng):190.38051480754146第5章、包及訪問控制權(quán)限——自我檢測(cè)(答案)1、填空題1、 package關(guān)鍵字可以定義一個(gè)包,import關(guān)鍵字可以導(dǎo)入包。2、 Java中存在四種訪問權(quán)限:private、default、protected、public。3、 Java中可以使用importstatic包.類.*導(dǎo)入一個(gè)類的全部靜態(tài)方法。4、 jar命令可以將全部的class打成一個(gè)壓縮包。5、 Java中java.lang包是自動(dòng)導(dǎo)入的。2、選擇題1、 String和Object類在A包中定義的。 A、 java.lang B、 java.util C、 D、 java.sql2、 C權(quán)限是同一包可以訪問,不同包的子類可以訪問,不同包的非子類不可以訪問。 A、 private B、 default C、 protected D、 public3、 下列說法正確的一項(xiàng)是C。 A、 java.lang.Integer是接口 B、 String定義在java.util包中 C、 Double類在java.lang包中 D、 Double類在java.lang.Object包中4、 下列關(guān)于包、類和源文件的描述中,不正確的一項(xiàng)是C。 A、 一個(gè)包可以包含多個(gè)類 B、 一個(gè)源文件中,只能有一個(gè)publicclass C、 屬于同一個(gè)包的類在默認(rèn)情況不可以互相訪問,必須使用import導(dǎo)入 D、 系統(tǒng)不會(huì)為源文件創(chuàng)建默認(rèn)的包5、 定義類時(shí)不可能用到的關(guān)鍵字是C。 A、 final B、 public C、 protected D、 static3、判斷題1、 java.lang包必須由用戶手工導(dǎo)入,否則無法使用。 ( × )2、 定義包后類的完整名稱是:包.類名稱。 ( √ )4、簡(jiǎn)答題1、 簡(jiǎn)述包的作用及使用。答: 使用包可以將功能近似的類統(tǒng)一管理,同時(shí)可以避免項(xiàng)目之中同名類名稱沖突問題;2、 簡(jiǎn)述Java的四種訪問權(quán)限的區(qū)別。答: Java一共有四種訪問控制權(quán)限: ·private:只可以在一個(gè)類中訪問,其他類不允許訪問; ·default:可以在一個(gè)包中訪問,但是不同包不允許訪問; ·protected:可以在同一個(gè)包中和不同包的子類所訪問,其他包的類不允許訪問; ·public:可以被所有包的類所訪問。3、 編寫一個(gè)單例設(shè)計(jì)模式,并簡(jiǎn)要說明其特點(diǎn):classSingleton{ //定義一個(gè)類 privatefinalstaticSingletoninstance=newSingleton(); privateSingleton(){ //構(gòu)造方法私有化 } publicvoidprint(){ System.out.println("HelloWorld."); } publicstaticSingletongetInstance(){ //取得本類對(duì)象 returninstance; }}publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ Singletoninst=null; //聲明對(duì)象 inst=Singleton.getInstance(); //利用“類.static方法()”取得實(shí)例化對(duì)象 inst.print(); //調(diào)用方法 }}程序運(yùn)行結(jié)果:HelloWorld. 構(gòu)造方法被私有化,只能夠通過getInstance()方法取得Singleton類的實(shí)例化對(duì)象,這樣不管外部如何操作,最終也只有一個(gè)實(shí)例化對(duì)象,在單例設(shè)計(jì)模式之中,一定會(huì)存在一個(gè)static方法,用于取得本類的實(shí)例化對(duì)象。第6章、異常的捕獲及處理——自我檢測(cè)(答案)1、填空題1、 Throwable下有那兩個(gè)子類:Error、Exception。2、 ArthmeticException類表示算術(shù)異常,ArraysIndexOutOfBoundsException表示數(shù)組越界異常。3、 一個(gè)try代碼后面必須跟著若干個(gè)catch代碼段或者一個(gè)finally代碼段。4、 如果一個(gè)方法使用了throws,則編譯器會(huì)強(qiáng)制在使用此方法時(shí)進(jìn)行異常的處理。5、 異常處理中使用finally作為異常的統(tǒng)一出口。2、選擇題1、 使用那個(gè)關(guān)鍵字可以在程序中手工拋出異常B。 A、 throws B、 throw C、 assert D、 class2、 下面A關(guān)鍵字可以用在方法的聲明處? A、 throws B、 assert C、 class D、 interface3、 為了捕獲一個(gè)異常,代碼必須放在下面A語句塊中。 A、 try塊 B、 catch塊 C、 throws塊 D、 finally塊4、 下面關(guān)于try塊的說法正確的是C。 A、 try塊后至少應(yīng)有一個(gè)catch塊 B、 try塊后必須有finally塊 C、 可能拋出異常的方法應(yīng)放在try塊中 D、 對(duì)拋出的異常的處理應(yīng)放在try塊中5、 finally塊中的代碼將A。 A、 總是被執(zhí)行 B、 如果try塊后面沒有catch塊時(shí),finally塊中的代碼才會(huì)執(zhí)行 C、 異常發(fā)生時(shí)才被執(zhí)行 D、 異常沒有發(fā)生時(shí)才執(zhí)行6、 一個(gè)異常將終止A。 A、 整個(gè)程序 B、 只終止拋出異常的方法 C、 產(chǎn)生異常的try塊 D、 上面的說法都不對(duì)7、 所有異常的共同父類是B。 A、 Error B、 Exception C、 Throwable D、 RuntimeException3、判斷題1、 一個(gè)try語句后有多個(gè)catch時(shí),捕獲范圍大的異常要放在捕獲范圍小的異常之后。 ( √ )2、 finally語句可以根據(jù)需要有選擇的添加。 ( √ )4、簡(jiǎn)答題1、 簡(jiǎn)述RuntimeException和Exception的區(qū)別。答: 異常(Exception)表示程序運(yùn)行過程中可能出現(xiàn)的非正常狀態(tài),運(yùn)行時(shí)異常(RuntimeException)表示虛擬機(jī)的通常操作中可能遇到的異常,是一種常見運(yùn)行錯(cuò)誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運(yùn)行時(shí)異常,但是并不要求必須聲明拋出未被捕獲的運(yùn)行時(shí)異常,即:Exception定義了必須處理的異常,而RuntimeException定義的異常可以選擇性的進(jìn)行處理。RuntimeException是Exception的子類;2、 try、catch、finally三種語句的功能是什么?答: try語句負(fù)責(zé)捕獲程序之中產(chǎn)生的異常; catch負(fù)責(zé)匹配異常類型,并且對(duì)指定的異常進(jìn)行處理; finally作為異常處理的統(tǒng)一出口,不管是否發(fā)生異常,都會(huì)執(zhí)行本程序。3、 簡(jiǎn)述Java中的異常處理機(jī)制。答: (1)、如果程序之中產(chǎn)生了異常,那么會(huì)自動(dòng)的由JVM根據(jù)異常的類型,實(shí)例化一個(gè)指定異常類的對(duì)象;(2)、如果這個(gè)時(shí)候程序之中沒有任何的異常處理操作,則這個(gè)異常類的實(shí)例化對(duì)象將交給JVM進(jìn)行處理,而JVM的默認(rèn)處理方式就是進(jìn)行異常信息的輸出,而后中斷程序執(zhí)行;(3)、如果程序之中存在了異常處理,則會(huì)由try語句捕獲產(chǎn)生的異常類對(duì)象;(4)、與try之后的每一個(gè)catch進(jìn)行匹配,如果匹配成功,則使用指定的catch進(jìn)行處理,如果沒有匹配成功,則向后面的catch繼續(xù)匹配,如果沒有任何的catch匹配成功,則這個(gè)時(shí)候?qū)⒔唤oJVM執(zhí)行默認(rèn)處理;(5)、不管是否有異常都會(huì)執(zhí)行finally程序,如果此時(shí)沒有異常,執(zhí)行完finally,則會(huì)繼續(xù)執(zhí)行程序之中的其他代碼,如果此時(shí)有異常沒有能夠處理(沒有一個(gè)catch可以滿足),那么也會(huì)執(zhí)行finally,但是執(zhí)行完finally之后,將默認(rèn)交給JVM進(jìn)行異常的信息輸出,并且程序中斷;4、 簡(jiǎn)述Error和Exception的區(qū)別。答: Error:指的是JVM錯(cuò)誤,這個(gè)時(shí)候的程序并沒有執(zhí)行,無法處理; Exception:指的是程序之中出現(xiàn)的錯(cuò)誤信息,可以進(jìn)行異常處理,主要關(guān)心Exception。5、 列舉三個(gè)常見的RuntimeException子類。答: NumberFormatException、ClassCastException、NullPointerException5、編程題1、 編寫應(yīng)用程序,從命令行輸入兩個(gè)小數(shù)參數(shù),求它們的商。要求程序中捕獲NumberFormatException異常和ArithmeticException異常。classMyMath{ publicintdiv(Stringx,Stringy)throwsNumberFormatException, ArithmeticException{ //出現(xiàn)異常要交給被調(diào)用處出 intresult=0; try{ intnuma=Integer.parseInt(x); intnumb=Integer.parseInt(y); result=numa/numb; //除法計(jì)算 }catch(Exceptione){ throwe; //向上拋 } returnresult; }}pu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年專業(yè)美容顧問合同
- 2025年企業(yè)正規(guī)融資合同范文
- 2025年個(gè)人之間地下車位買賣協(xié)議書
- 加盟微商合同范本2025
- 2025年企業(yè)供應(yīng)鏈策劃合作保密協(xié)議范本
- 2025年信息咨詢服務(wù)申請(qǐng)協(xié)議范本
- 2025年工程在建房屋購(gòu)買合同模板
- 2025官方二手車轉(zhuǎn)讓合同范例
- 2025年合作伙伴共同經(jīng)營(yíng)店面協(xié)議范本
- 2025年福州貨運(yùn)從業(yè)資格證考試資料電子版
- Unit 4 Time to celebrate 教學(xué)設(shè)計(jì)-2024-2025學(xué)年外研版英語七年級(jí)上冊(cè)
- 市政管網(wǎng)工程投標(biāo)方案(技術(shù)方案)
- 健康檔案模板
- 購(gòu)買演唱會(huì)門票的合同模板
- DB32-T 4790-2024建筑施工特種作業(yè)人員安全操作技能考核標(biāo)準(zhǔn)
- 2022年安徽阜陽太和縣人民醫(yī)院本科及以上學(xué)歷招聘筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 頂管工程施工及驗(yàn)收技術(shù)標(biāo)準(zhǔn)
- 【基于現(xiàn)金流的企業(yè)財(cái)務(wù)風(fēng)險(xiǎn)探究文獻(xiàn)綜述4100字】
- TD/T 1036-2013 土地復(fù)墾質(zhì)量控制標(biāo)準(zhǔn)(正式版)
- 安全警示教育的會(huì)議記錄內(nèi)容
- 2024年度-銀行不良清收技巧培訓(xùn)課件(學(xué)員版)
評(píng)論
0/150
提交評(píng)論