java程序的設(shè)計(jì)試題庫完整_第1頁
java程序的設(shè)計(jì)試題庫完整_第2頁
java程序的設(shè)計(jì)試題庫完整_第3頁
java程序的設(shè)計(jì)試題庫完整_第4頁
java程序的設(shè)計(jì)試題庫完整_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

PAGE32數(shù)據(jù)結(jié)構(gòu)<C++版>./《Java語言程序設(shè)計(jì)基礎(chǔ)教程》練習(xí)思考題參考答案第1章Java程序設(shè)計(jì)概述1.1單項(xiàng)選擇題1.編譯JavaApplication源文件將產(chǎn)生相應(yīng)的字節(jié)碼文件,擴(kuò)展名是什么 A..java B..class C..html D..exe解答:B2.Java語言具有許多優(yōu)點(diǎn)和特點(diǎn),下列選項(xiàng)中,哪個(gè)反映了Java中"一次編譯,隨處運(yùn)行"的特點(diǎn). A.簡單性 B.平臺(tái)無關(guān)性 C.面向?qū)ο笮? D.安全性解答:B3.Java語言具有許多優(yōu)點(diǎn)和特點(diǎn),下列選項(xiàng)中,哪個(gè)反映了Java中并行機(jī)制的特點(diǎn). A.多線程 B.平臺(tái)無關(guān)性 C.面向?qū)ο笮? D.安全性解答:A4.在Java語言中,下列哪些語句關(guān)于內(nèi)存回收的說明是正確的?A.程序員必須創(chuàng)建一個(gè)線程來釋放內(nèi)存;B.內(nèi)存回收程序負(fù)責(zé)釋放無用內(nèi)存;C.內(nèi)存回收程序允許程序員直接釋放內(nèi)存;D.內(nèi)存回收程序可以在指定的時(shí)間釋放內(nèi)存對(duì)象解答:B5.一個(gè)Java源文件中最多只能有多少個(gè)public類. A.1個(gè) B.2個(gè) C.3個(gè)D.任意多個(gè)解答:A6.下面哪一個(gè)不是Java語言所具有的特點(diǎn). A.沒有全局變量,在類的定義外部沒有任何的變量定義;B.不直接支持指針操作,而使用更安全的引用類型; C.支持子類對(duì)父類的多繼承; D.具有自動(dòng)垃圾收集功能;解答:C7.下面哪一個(gè)不是Java開發(fā)工具包JDK的組成部分. A.Java的編譯器;B.Java的解釋器; C.Java的API繼承類庫; D.Eclipse開發(fā)工具;解答:C8.JDK提供的編譯器是〔. A.java.exe B.javac.exe C.javap.exe D.javaw.exe解答:B9.作為Java應(yīng)用程序入口的main方法,其聲明格式可以是〔 A.publicvoidmain<String[]args> B.publicstaticvoidmain<String[]args> C.publicstaticvoidMain<String*args> D.publicintmain<String[]args>解答:B10.下列說法正確的是〔AA、JAVA程序的main方法必須寫在類里面B、JAVA程序中可以有多個(gè)main方法C、JAVA程序中類名必須與文件名一樣D、JAVA程序的main方法中如果只有一條語句,可以不用{}<大括號(hào)>括起來11.下列哪些語句關(guān)于Java內(nèi)存回收的說明是正確的?〔BA、程序員必須創(chuàng)建一個(gè)線程來釋放內(nèi)存B、內(nèi)存回收程序負(fù)責(zé)釋放無用內(nèi)存C、內(nèi)存回收程序允許程序員直接釋放內(nèi)存D、內(nèi)存回收程序可以在指定的時(shí)間釋放內(nèi)存對(duì)象1.2填空題1、開發(fā)與運(yùn)行Java程序需要經(jīng)過的三個(gè)主要步驟為____________、____________和____________.解答:編輯源程序、編譯生成字節(jié)碼和解釋運(yùn)行字節(jié)碼2、使用Java編譯器___javac____.exe編譯源文件得到字節(jié)碼文件.3、Java應(yīng)用程序必須通過Java解釋器__JAVA__.exe來解釋執(zhí)行其字節(jié)碼文件.4、如果Java源文件中有一個(gè)類是public類,那么源文件的名字必須與這個(gè)類的名字完全_相同______,擴(kuò)展名是.java.5、Java應(yīng)用程序總是從主類的____main___方法開始執(zhí)行.1.3簡答題13.簡述Java程序的開發(fā)過程?

〔1使用一個(gè)文字編輯器,編寫源文件.〔2使用java編譯器,編譯源文件得到字節(jié)碼文件.

〔3解釋運(yùn)行字節(jié)碼,分兩種java應(yīng)用程序必須通過java解釋器來解釋執(zhí)行,java小應(yīng)用程序必須使用解釋器和瀏覽器運(yùn)行程序.1.什么是Java虛擬機(jī)?為什么Java被稱作是"平臺(tái)無關(guān)的編程語言"?解答:Java虛擬機(jī)是一個(gè)可以執(zhí)行Java字節(jié)碼的虛擬機(jī)進(jìn)程.Java源文件被編譯成能被Java虛擬機(jī)執(zhí)行的字節(jié)碼文件.Java被設(shè)計(jì)成允許應(yīng)用程序可以運(yùn)行在任意的平臺(tái),而不需要程序員為每一個(gè)平臺(tái)單獨(dú)重寫或者是重新編譯.Java虛擬機(jī)讓這個(gè)變?yōu)榭赡?因?yàn)樗赖讓佑布脚_(tái)的指令長度和其他特性.3.Java語言的關(guān)鍵特點(diǎn)有哪些?解答:簡單性平臺(tái)無關(guān)性面向?qū)ο笮园踩苑植际蕉嗑€程動(dòng)態(tài)性1.4綜合題第2章Java基本的程序設(shè)計(jì)結(jié)構(gòu)2.1單項(xiàng)選擇題1、下面哪一項(xiàng)在java中是非法的標(biāo)識(shí)符?〔A.$user B.pointC.You&meD._endline解答:C2、若有定義inta=9,b=6;那么a>b的值是:〔A.0 B.1C.false D.true解答:D3、執(zhí)行完以下代碼int[]x=newint[25];后,以下說明正確的是:〔A.x[24]為0 B.x[24]未定義 C.x[25]為0 D.x[0]為空解答:A4、Java應(yīng)用程序的main方法中有以下語句,則輸出的結(jié)果是〔.int[]x={2,3,-8,7,9};intmax=x[0];for<inti=1;i<x.length;i++>{if<x[i]>max>max=x[i];}System.out.println<max>;A.2 B.-8 C.7 D.9解答:D5、設(shè)x=1,y=2,z=3,則表達(dá)式y(tǒng)+=z--/++x的值是〔A.3 B.3.5C.4 D.5解答:A5、執(zhí)行System.out.println<5/4>,這條代碼的輸出結(jié)果是〔A.1 B.1.25C.1.5 D.0解答:A6、下列語句有錯(cuò)誤的是:〔A.int[]a;B.int[]b=newint[10];C.intc[]=newint[];D.intd[]=null; 解答:C7、下列語句有錯(cuò)誤的是:〔A.inta[][]=newint[5][5];B.int[][]b=newint[5][5];C.int[]c[]=newint[5][5];D.int[][]d=newint[5,5];解答:D8、下列哪一個(gè)不屬于Java中的8種基本數(shù)據(jù)類型〔A.double;B.char;C.int;D.String;解答:D9、以下數(shù)據(jù)類型存儲(chǔ)空間最大的是〔.〔Abyte〔Blong〔Cfloat〔Dchar解答:B10、System.out.println<"5"+2>;的輸出結(jié)果應(yīng)該是〔.A52B7C2D5答案:A11.在類的定義中可以有兩個(gè)同名方法,每個(gè)方法的參數(shù)不同,這種現(xiàn)象稱為方法〔D.〔A封裝〔B繼承〔C覆蓋〔D重載12.java中定義字符串Strings="pzhu",下面操作可以取得字符串長度的是〔.A.s.length<>B.s.lengthC.s.size<>D.length<s>解答:A13.指出下列程序運(yùn)行的結(jié)果〔B<很難>publicclassExample{Stringstr=newString<"good">;char[]ch={'a','b','c'};publicstaticvoidmain<Stringargs[]>{Exampleex=newExample<>;ex.change<ex.str,ex.ch>;System.out.print<ex.str+"and">;System.out.print<ex.ch>;}publicvoidchange<Stringstr,charch[]>{str="testok";ch[0]='g';}}A、goodandabcB、goodandgbcC、testokandabcD、testokandgbc14.下面代碼的運(yùn)行結(jié)果為:〔C<較難>importjava.io.*;importjava.util.*;publicclassfoo{publicstaticvoidmain<String[]args>{Strings;System.out.println<"s="+s>;}}A代碼得到編譯,并輸出"s="B代碼得到編譯,并輸出"s=null"C由于Strings沒有初始化,代碼不能編譯通過D代碼得到編譯,但捕獲到NullPointException異常15.關(guān)于以下程序段,正確的說法是〔C1.Strings1="abc"+"def";2.Strings2=newString〔s1;3.if〔s1==s24.System.out.println<"==succeeded">;5.if<s1.equals<s2>>6.System.out.println<".equals<>succeeded">;A、行4與行6都將執(zhí)行B、行4執(zhí)行,行6不執(zhí)行C、行6執(zhí)行,行4不執(zhí)行D、行4、行6都不執(zhí)行16.Javaapplication中的主類需包含main方法,main方法的返回類型是什么?〔DA、intB、floatC、doubleD、void17.為一個(gè)boolean類型變量賦值時(shí),可以使用<B>方式A、boolean=1;B、booleana=<9>=10>;C、booleana="真";D、booleana==false;18.表達(dá)式<11+3*8>/4%3的值是<D>A、31B、0C、1D、219.運(yùn)算符優(yōu)先級(jí)別排序正確的是〔A〔太難A、由高向低分別是:<>、!、算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符;B、由高向低分別是:<>、關(guān)系運(yùn)算符、算術(shù)運(yùn)算符、賦值運(yùn)算符、!、邏輯運(yùn)算符;C、由高向低分別是:<>、算術(shù)運(yùn)算符、邏輯運(yùn)算符、關(guān)系運(yùn)算符、!、賦值運(yùn)算符;D、由高向低分別是:<>、!、關(guān)系運(yùn)算符、賦值運(yùn)算符、算術(shù)運(yùn)算符、邏輯運(yùn)算符;20.下列值不為true的表達(dá)式有〔C.A、"john"=="john"B、"john".equals<"john">C、"john"="john"D、"john".equals<newString<"john">>21、下面的方法,當(dāng)輸入為2的時(shí)候返回值是多少?〔D<很難>publicstaticintgetValue<inti>{intresult=0;switch<i>{case1:result=result+i;case2:result=result+i*2;case3:result=result+i*3;}returnresult;}A0B2C4D10答案:D解析:注意這里case后面沒有加break,所以從case2開始一直往下運(yùn)行.22、下面有關(guān)for循環(huán)的描述正確的是〔AA、for循環(huán)體語句中,可以包含多條語句,但要用大括號(hào)括起來B、for循環(huán)只能用于循環(huán)次數(shù)已經(jīng)確定的情況C、在for循環(huán)中,不能使用break語句跳出循環(huán)D、for循環(huán)是先執(zhí)行循環(huán)體語句,后進(jìn)行條件判斷23、score是一個(gè)整數(shù)數(shù)組,有五個(gè)元素,已經(jīng)正確初始化并賦值,仔細(xì)閱讀下面代碼,程序運(yùn)行結(jié)果是〔Btemp=score[0];for<intindex=1;index<5;index++>{if<score[index]<temp>{temp=score[index];}}A.求最大數(shù)B.求最小數(shù)C.找到數(shù)組最后一個(gè)元素D.編譯出錯(cuò)26、2.2填空題1、Java語言是一種完全的_面向?qū)ο骭程序設(shè)計(jì)語言2、Strings1="China";intn=s1.length<>;n的值為_5__3、在Java語言中,基本數(shù)據(jù)類型包括:____整數(shù)類型、____浮點(diǎn)類型、____字符類型_和____布爾類型17、在Java的基本數(shù)據(jù)類型中,char型采用Unicode編碼方案,每個(gè)Unicode碼占用__2___字節(jié)內(nèi)存空間,這樣,無論是中文字符還是英文字符,都是占用__2___字節(jié)內(nèi)存空間.18、設(shè)x=2,則表達(dá)式<x++>/3的值是__0___.20、設(shè)有數(shù)組定義:intMyIntArray[]={10,20,30,40,50,60,70};則執(zhí)行以下幾個(gè)語句后的輸出結(jié)果是:120.intMyIntArray[]={10,20,30,40,50,60,70}; ints=0; for<inti=0;i<MyIntArray.length;i++> if<i%2==1> s+=MyIntArray[i]; System.out.println<s>;21、數(shù)組對(duì)象的長度在數(shù)組對(duì)象創(chuàng)建之后,就__不會(huì)____改變.數(shù)組元素的下標(biāo)總是從___0___開始.22、對(duì)于數(shù)組int[][]t={{1,2,3},{4,5,6}}來說,t.length等于__2___,t[0].length等于__3____.2.3簡答題1、Java的基本數(shù)據(jù)類型有哪8種,每種類型的內(nèi)存空間分別是多少.2.4綜合題26、編程計(jì)算10~20的整數(shù)的平方值,將結(jié)果保存在一個(gè)數(shù)組中.27、編寫一個(gè)程序使之從鍵盤讀入10個(gè)整數(shù)存入整型數(shù)組a中,并輸出這10個(gè)整數(shù)的最大值和最小值.importjava.util.Scanner;publicclasslianxi30{publicstaticvoidmain<Stringargs[]>{ Scannertemp;float[]sum=newfloat[11];floatmax,min;for<inti=0;i<10;i++>{ System.out.println<"請(qǐng)輸入第一個(gè)數(shù)字<回車結(jié)束>:">; temp=newScanner<System.in>; Stringa=temp.nextLine<>; sum[i]=Integer.parseInt<a>;//獲取輸入的字符串 } max=sum[0]; min=sum[0];for<intj=1;j<10;j++> {if<max<sum[j]> max=sum[j];elseif<min>sum[j]> min=sum[j]; }System.out.println<max>; System.out.println<min>;}}31、如果我國經(jīng)濟(jì)以每年10%的速度保持穩(wěn)定增長,請(qǐng)編寫一個(gè)程序,計(jì)算每年達(dá)到多少,多少年可以實(shí)現(xiàn)總量翻兩番.classexA4_1{publicstaticvoidmain<Stringargs[]>{inta=0;doublei=0.10,sum=1;while<sum<=4>{sum=<i+1>*sum;a++;System.out.println<"第"+a+"年達(dá)到"+sum>;}System.out.println<"需要"+a+"年實(shí)現(xiàn)兩番">;}}第3章類和對(duì)象3.1單項(xiàng)選擇題1、下列關(guān)于變量的敘述哪個(gè)是錯(cuò)的?〔A.實(shí)例變量是類的成員變量.B.在方法中定義的局部變量在該方法被執(zhí)行時(shí)創(chuàng)建.C.實(shí)例變量用關(guān)鍵字static聲明.D.局部變量在使用前必須被初始化.解答:C2、在Java語言中,下列哪個(gè)包是編譯器自動(dòng)導(dǎo)入的?〔A.java.applet B.java.langC.java.io D.java.awt解答:B6、不允許作為類及類成員的訪問控制符的是〔.A.public B.privateC.static D.protected解答:C7、為AB類的一個(gè)無形式參數(shù)無返回值的方法method書寫方法頭,使得使用類名AB作為前綴就可以調(diào)用它,該方法頭的形式為〔.A、staticvoidmethod<> B、publicvoidmethod<>C、finalvoidmethod<> D、abstractvoidmethod<>解答:A8、 可以在下面代碼段pointx處寫入的是?〔//pointxpublicclassInteresting{//dosomething}A. Stringstr;B. staticintPI=3.14;C. publicclassMyClass{//dootherthing…}D. importjava.awt.*;解答:D9、Java提供的許多類在不同的包中,使用下面哪個(gè)語句可以引入包中的類.A.packageB.includeC.importD.add解答:C11、已知A類被打包在packageA,B類被打包在packageB,且B類被聲明為public,且有一個(gè)成員變量x被聲明為protected控制方式.C類也位于packageA包,且繼承了B類.則以下說法正確的是:〔A、A類的實(shí)例不能訪問到B類的實(shí)例B、A類的實(shí)例能夠訪問到B類一個(gè)實(shí)例的x成員C、C類的實(shí)例可以訪問到B類一個(gè)實(shí)例的x成員D、C類的實(shí)例不能訪問到B類的實(shí)例解答:C〔太難13、在Java中,關(guān)于final關(guān)鍵字的說法正確的是〔A、如果修飾變量,則一旦賦了值,就等同一個(gè)常量.B、如果修飾類,則該類只能被一個(gè)子類繼承.C、如果修飾方法,則該方法不能在子類中被覆蓋.D、如果修飾方法,則該方法所在的類不能被繼承.解答:A,C14、關(guān)于構(gòu)造方法以下說法錯(cuò)誤的是<D>.〔A構(gòu)造方法名必須與類名一致〔B構(gòu)造方法可以重載〔C構(gòu)造方法是通過new來調(diào)用〔D每個(gè)類都必須編寫構(gòu)造方法代碼15、關(guān)于類的定義以下說法錯(cuò)誤〔B.〔A類定義使用class關(guān)鍵字〔B每個(gè)類中必須有一個(gè)main方法〔C一個(gè)包可以包含多個(gè)類〔Djava中所有類都是Object類的子類16、在創(chuàng)建對(duì)象時(shí)必須〔CA>先聲明對(duì)象,然后才能使用對(duì)象B>先聲明對(duì)象,為對(duì)象分配內(nèi)存空間,然后才能使用對(duì)象C>先聲明對(duì)象,為對(duì)象分配內(nèi)存空間,對(duì)對(duì)象初始化,然后才能使用對(duì)象D>上述說法都對(duì)17、在調(diào)用方法時(shí),若要使方法改變實(shí)參的值,可以〔BA>用基本數(shù)據(jù)類型作為參數(shù)B>用對(duì)象作為參數(shù)C>A和B都對(duì)D>A和B都不對(duì)18、關(guān)于以下程序代碼的說明正確的是〔DclassHasStatic{ privatestaticintx=100; publicstaticvoidmain<Stringargs[]>{ HasStatichs1=newHasStatic<>; hs1.x++; HasStatichs2=newHasStatic<>; hs2.x++; hs1=newHasStatic<>; hs1.x++; HasStatic.x--; System.out.println<"x="+x>; }}A、5行不能通過編譯,因?yàn)橐昧怂接徐o態(tài)變量B、10行不能通過編譯,因?yàn)閤是私有靜態(tài)變量C、程序通過編譯,輸出結(jié)果為:x=103D、程序通過編譯,輸出結(jié)果為:x=10219、以下關(guān)于構(gòu)造函數(shù)的描述錯(cuò)誤的是〔A.A、構(gòu)造函數(shù)的返回類型只能是void型.B、構(gòu)造函數(shù)是類的一種特殊函數(shù),它的方法名必須與類名相同.C、構(gòu)造函數(shù)的主要作用是完成對(duì)類的對(duì)象的初始化工作.D、一般在創(chuàng)建新對(duì)象時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù).20、Java中,在如下所示的Test類中,共有〔C個(gè)構(gòu)造方法.publicclassTest{privateintx;publicTest<>{x=35;}publicvoidTest<doublef>{This.x=<int>f;}publicTest<Strings>{}}A、0B、1C、2D、321、在Java中,關(guān)于構(gòu)造方法,下列說法錯(cuò)誤的是<C>A、構(gòu)造方法的名稱必須與類名相同B、構(gòu)造方法可以帶參數(shù)C、構(gòu)造方法不可以重載D、構(gòu)造方法絕對(duì)不能有返回值22、在Java語言中,下列關(guān)于類的繼承的描述,正確的是〔B.A、一個(gè)類可以繼承多個(gè)父類B、一個(gè)類可以具有多個(gè)子類C、子類可以使用父類的所有方法D、子類一定比父類有更多的成員方法23、分析選項(xiàng)中關(guān)于Java中this關(guān)鍵字的說法正確的是〔AA、this關(guān)鍵字是在對(duì)象內(nèi)部指代自身的引用B、this關(guān)鍵字可以在類中的任何位置使用C、this關(guān)鍵字和類關(guān)聯(lián),而不是和特定的對(duì)象關(guān)聯(lián)D、同一個(gè)類的不同對(duì)象共用一個(gè)this24、在Java接口中,下列選項(xiàng)中有效的方法聲明是〔A.A、publicvoidaMethod<>;B、publicfinalvoidaMethod<>;C、protectedvoidaMethod<>;D、privatevoidaMethod<>;25、下列選項(xiàng)中關(guān)于Java中super關(guān)鍵字的說法正確的是〔A.A、super關(guān)鍵字是在子類對(duì)象內(nèi)部指代其父類對(duì)象的引用B、super關(guān)鍵字不僅可以指代子類的直接父類,還可以指代父類的父類C、子類通過super關(guān)鍵字只能調(diào)用父類的方法,而不能調(diào)用父類的屬性D、子類通過super關(guān)鍵字只能調(diào)用父類的屬性,而不能調(diào)用父類的方法3.2填空題1、在Java程序中,通過類的定義只能實(shí)現(xiàn)____單重繼承____,但通過接口的定義可以實(shí)現(xiàn)多____多重繼承____.2、_抽象〔abstract___方法是一種僅有方法頭,沒有具體方法體和操作實(shí)現(xiàn)的方法,該方法必須在抽象類之中定義.__final____方法是不能被當(dāng)前類的子類重新定義的方法.3、面向?qū)ο蟪绦蛟O(shè)計(jì)的三個(gè)特征是_____封裝、____多態(tài)、____繼承4、Java是面向?qū)ο笳Z言,類是客觀事物的_抽象____,而對(duì)象是類的_實(shí)例____.5、如果在子類中想使用被子類隱藏的父類成員變量或方法,就可以使用關(guān)鍵字__super_____.6、Java中有一種叫作___構(gòu)造方法__的特殊方法用來對(duì)類的對(duì)象成員進(jìn)行初始化.7、JAVA語言中提供了兩種類型的字符串類來處理字符串,它們是___String_和___StringBuffer類8、Java語言中,所有的類都是___Object的子類,Java的窗口通常是___JFrame__的子類,___抽象_類只能定義但不能被實(shí)例化,_最終_類不能被繼承9、一般Java程序的類體由兩部分組成:一部分是_屬性_,另一部分是_方法_10、分別用__class_關(guān)鍵字來定義類,用_new__關(guān)鍵字來分配實(shí)例存儲(chǔ)空間.11、Java中類成員的限定詞有以下幾種:__private__,public___,protected___,_缺省__.其中,_public__的限定的范圍最大.類中限定為_private__的成員,只能被這個(gè)類本身內(nèi)部訪問.12、Java類中,如果類的定義者沒有顯式的定義任何構(gòu)造方法,系統(tǒng)將自動(dòng)提供一個(gè)___無參默認(rèn)_構(gòu)造方法.13、在子類中定義與父類的相同的方法,若在多個(gè)子類中定義相同的方法,則可以調(diào)用不同子類中的相同方法而實(shí)現(xiàn)不同的功能,這實(shí)現(xiàn)了程序運(yùn)行時(shí)的______多態(tài).3.3簡答題1.簡單闡述方法的重載和方法的重寫之間的區(qū)別解答:重寫是子類的方法覆蓋父類的方法,要求方法名和參數(shù)都相同重載是在同一個(gè)類中的兩個(gè)或兩個(gè)以上的方法,擁有相同的方法名,但是參數(shù)卻不相同2、簡述實(shí)例變量和類變量的區(qū)別.解答:類變量也叫靜態(tài)變量,也就是在變量前加了static的變量;實(shí)例變量也叫對(duì)象變量,即沒加static的變量;區(qū)別在于:類變量是所有對(duì)象共有,其中一個(gè)對(duì)象將它值改變,其他對(duì)象得到的就是改變后的結(jié)果;而實(shí)例變量則屬對(duì)象私有,某一個(gè)對(duì)象將其值改變,不影響其他對(duì)象;2、簡述實(shí)例方法和類方法的區(qū)別解答:實(shí)例方法可以對(duì)當(dāng)前對(duì)象的實(shí)例變量進(jìn)行操作,也可以對(duì)類變量進(jìn)行操作,實(shí)例方法由實(shí)例對(duì)象調(diào)用.但類方法不能訪問實(shí)例變量,只能訪問類變量.類方法可以由類名直接調(diào)用,也可由實(shí)例對(duì)象進(jìn)行調(diào)用.類方法中不能使用this或super關(guān)鍵字.3、面向?qū)ο蟮娜齻€(gè)基本特征是什么,分別簡單介紹每個(gè)特征.解答:三大特性是:封裝,繼承,多態(tài).封裝性就是把對(duì)象的屬性和服務(wù)結(jié)合成一個(gè)獨(dú)立的單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié).特殊類的對(duì)象擁有其一般類的全部屬性與服務(wù),稱作特殊類對(duì)一般類的繼承.對(duì)象的多態(tài)性是指在一般類中定義的屬性或服務(wù)被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為.這使得同一個(gè)屬性或服務(wù)在一般類及其各個(gè)特殊類中具有不同的語義.4、簡單闡述成員變量和局部變量的區(qū)別.解答:1>成員變量在整個(gè)類內(nèi)都有效,局部變量只在定義它的方法內(nèi)有效.2>成員變量又分為實(shí)例成員變量〔簡稱實(shí)例變量和類變量〔也稱靜態(tài)變量,如果成員變量的類型前面加上關(guān)鍵字static,這樣的成員變量稱為類變量或靜態(tài)變量.3>如果局部變量的名字與成員變量的名字相同,則成員變量被隱藏,也就是說,這個(gè)成員變量在這個(gè)方法內(nèi)暫時(shí)失效.這時(shí)如果想在該方法內(nèi)使用成員變量,必須使用關(guān)鍵字this.5、簡述對(duì)象的引用和實(shí)體.解答:當(dāng)用類創(chuàng)建一個(gè)對(duì)象時(shí),類中的成員變量被分配內(nèi)存空間,這些內(nèi)存空間稱為該對(duì)象的實(shí)體,而對(duì)象中存放著引用,以確保實(shí)體由該對(duì)象操作使用.沒有實(shí)體的對(duì)象稱為空對(duì)象,空對(duì)象不能使用,即不能讓一個(gè)空對(duì)象去調(diào)用方法產(chǎn)生行為.6、簡述this關(guān)鍵字的意義,以及它在成員方法和構(gòu)造方法中如何使用.解答:this是Java的一個(gè)關(guān)鍵字,表示某個(gè)對(duì)象.this可以出現(xiàn)在實(shí)例方法和構(gòu)造方法中,但不可以出現(xiàn)在類方法中.this可以出現(xiàn)在實(shí)例方法和構(gòu)造方法中,但不可以出現(xiàn)在類方法中.this關(guān)鍵字出現(xiàn)在類的構(gòu)造方法中時(shí),代表使用該構(gòu)造方法所創(chuàng)建的對(duì)象.實(shí)例方法必須通過對(duì)象來調(diào)用,當(dāng)this關(guān)鍵字出現(xiàn)在類的實(shí)例方法中時(shí),代表正在調(diào)用該方法的當(dāng)前對(duì)象.成員函數(shù)中定義了和成員變量中相同的變量時(shí),引用成員變量要用this;構(gòu)造函數(shù)中調(diào)用同一個(gè)類的其他構(gòu)造函數(shù)時(shí)用this.7、簡單描述Java的參數(shù)傳值中的兩種方式,基本數(shù)據(jù)類型參數(shù)的傳值和引用類型參數(shù)的傳值?解答:在基本數(shù)據(jù)類型參數(shù)的傳值中,基本數(shù)據(jù)類型的參數(shù)向該參數(shù)傳遞的值的級(jí)別不可以高于該參數(shù)的級(jí)別.在引用類型參數(shù)的傳值中,Java的引用類型數(shù)據(jù)包括對(duì)象、數(shù)組和接口,當(dāng)參數(shù)是引用類型時(shí),"傳值"傳遞的是變量的引用而不是變量所引用的實(shí)體.如果改變參數(shù)變量所引用的實(shí)體,就會(huì)導(dǎo)致原變量的實(shí)體發(fā)生同樣的變化,但是如果改變參數(shù)的引用不會(huì)影響向其傳值的變量的引用.8、基本數(shù)據(jù)類型和對(duì)象作為參數(shù)傳遞的不同?解答:〔1基本數(shù)據(jù)類型作為參數(shù)在方法中傳遞的是值傳遞.〔2對(duì)象是引用傳遞,當(dāng)對(duì)象作為參數(shù)傳遞時(shí),傳遞的是對(duì)象的地址.3.4綜合題1、定義一個(gè)"點(diǎn)"<Point>類用來表示三維空間中的點(diǎn),類體的成員變量x,y,z分別表示三維空間的坐標(biāo).類體中具有如下成員方法的定義:1構(gòu)造方法Point〔可以生成具有特定坐標(biāo)的點(diǎn)對(duì)象.2setX<>,setY<>,setZ<>為可以設(shè)置三個(gè)坐標(biāo)的方法.3.getDistance<>為可以計(jì)算該點(diǎn)距離原點(diǎn)距離平方的方法.解答:classPoint{ doublex,y,z; Point<double_x,double_y,double_z> { x=_x; y=_y; z=_z; } voidsetX<double_x>{ x=_x; } voidsetY<double_y>{y=_y; } voidsetZ<double_z>{z=_z; } doublegetDistance<>{ return<x*x+y*y+z*z>; }}2、編寫一個(gè)Java應(yīng)用程序Test類,實(shí)現(xiàn)成員方法max<a,b>的重載.具體要求如下:a> 編寫voidmax<inta,intb>成員方法,對(duì)兩個(gè)整數(shù)進(jìn)行大小的比較,輸出打印較大的那個(gè)整數(shù).b> 編寫voidmax<floata,floatb>成員方法,對(duì)兩個(gè)float數(shù)進(jìn)行大小的比較,輸出打印較大的那個(gè)float數(shù).c> 編寫voidmax<doublea,doubleb>成員方法,對(duì)兩個(gè)double數(shù)進(jìn)行大小的比較,輸出打印較大的那個(gè)double數(shù).publicclassTest{ voidmax<inta,intb>{ System.out.println<a>b?a:b>; } voidmax<floata,floatb>{ System.out.println<a>b?a:b>; } voidmax<doublea,doubleb>{ntln<a>b?a:b>; } publicstaticvoidmain<String[]args>{ Testt=newTest<>; t.max<3,4>; }}3、編寫一個(gè)矩形類對(duì)數(shù)學(xué)中的矩形進(jìn)行抽象描述,并具有方法可以計(jì)算矩形的周長和面積,具體分為以下三個(gè)子任務(wù)完成.〔1創(chuàng)建Rectangle類,添加屬性width、height,并定義構(gòu)造方法Rectangle<double_width,double_height>;〔2在Rectangle類中添加兩種方法computCircum<>和computArea<>分別計(jì)算矩形的周長和面積;〔3編程利用Rectangle對(duì)象輸出一個(gè)30*40的矩形的周長和面積.解答:publicclassTestRectang{publicstaticvoidmain<String[]args>{ //TODOAuto-generatedmethodstub Rectanglerect1=newRectangle<20,30>; System.out.println<putArea<>>; System.out.println<putCircum<>>; }}classRectangle{doublewidth,height;Rectangle<>{ width=0; height=0; } Rectangle<double_width,double_height>{ width=_width; height=_height; }doublecomputArea<>{returnwidth*height; }doublecomputCircum<>{return2*<width+height>; }}第4章繼承、接口和內(nèi)部類4.1單項(xiàng)選擇題1、Java中用于定義接口的關(guān)鍵字是〔A、import B、packageC、class D、interface解答:D2、以下關(guān)于abstract的說法,正確的是<>A、abstract只能修飾類B、abstract只能修飾方法C、abstract類中必須有abstract方法D、abstarct方法所在的類必須用abstract修飾解答:D3、下列哪種說法是正確的〔A、私有方法不能被子類覆蓋.B、子類可以覆蓋超類中的任何方法.C、覆蓋方法可以聲明自己拋出的異常多于那個(gè)被覆蓋的方法.D、覆蓋方法中的參數(shù)清單必須是被覆蓋方法參數(shù)清單的子集.解答:A4、關(guān)于類繼承的說法,正確的是〔A、Java類允許多重繼承B、Java接口允許多繼承C、接口和類都允許多繼承D、接口和類都不允許多繼承解答:B5、 關(guān)于抽象類,正確的是______.A.抽象類中不可以有非抽象方法B.某個(gè)非抽象類的父類是抽象類,則這個(gè)子類必須重載父類的所有抽象方法C.可以用抽象類直接去創(chuàng)建對(duì)象D.接口和抽象類是同一個(gè)概念解答:B8、抽象類A和抽象類B的定義如下:abstractclassA{ abstractintgetinfo<>;}publicclassBextendsA{ privateinta=0; publicintgetinfo<>{ returna; } publicstaticvoidmain<Stringargs[]>{Bb=newB<>; System.out.println<b.getinfo<>>; }}關(guān)于上述代碼說明正確的是〔.A.輸出結(jié)果為0 B.通過編譯但沒有輸出任何結(jié)果C.第5行不能通過編譯 D.程序第2行不能通過編譯解答:A9、 下面程序的運(yùn)行結(jié)果是______classex4_5_11_A{ protectedstaticintcount=0; publicex4_5_11_A<>{ count++; }}classex4_5_11_Bextendsex4_5_11_A{ publicex4_5_11_B<>{ count++; }}classex4_5_11{ publicstaticvoidmain<Stringargs[]>{ex4_5_11_Bx=newex4_5_11_B<>;System.out.println<"count="+x.count>; }}A.count=1 B.count=2C.count=3 D.count=4解答:B10、設(shè)有下面兩個(gè)類的定義:classPerson{ longid;//身份證號(hào)Stringname;//姓名}classStudentextendsPerson{ intscore;//入學(xué)總分intgetScore<>{returnscore;}} 問:類Person和類Student的關(guān)系是〔A、包含關(guān)系 B、繼承關(guān)系C、關(guān)聯(lián)關(guān)系 D、無關(guān)系,上述類定義有語法錯(cuò)誤解答:B11、以下程序代碼錯(cuò)誤的是〔B.abstractclassP{}classAextendsP{}abstractclassBextendsP{}〔APp=newA<>;〔BPp=newB<>;〔CAa=newA<>;〔DPp=newP<>{voidfoo<>{}};12、下面是People和Child類的定義和構(gòu)造方法,每個(gè)構(gòu)造方法都輸出編號(hào).在執(zhí)行newChild<"mike">的時(shí)候都有哪些構(gòu)造方法被順序調(diào)用?請(qǐng)選擇輸出結(jié)果<D>classPeople{Stringname;publicPeople<>{System.out.print<1>;}publicPeople<Stringname>{System.out.print<2>;=name;}}classChildextendsPeople{Peoplefather;publicChild<Stringname>{System.out.print<3>;=name;father=newPeople<name+":F">;}publicChild<>{System.out.print<4>;}}A312B32C432D13213、選項(xiàng)中哪一行代碼可以替換題目中//addcodehere而不產(chǎn)生編譯錯(cuò)誤?〔ApublicabstractclassMyClass{publicintconstInt=5;//addcodeherepublicvoidmethod<>{}}Apublicabstractvoidmethod<inta>;BconstInt=constInt+5;Cpublicintmethod<>;DpublicabstractvoidanotherMethod<>{}15、以下哪項(xiàng)是接口的正確定義?〔DA、interfaceB{voidprint<>{}}B、abstractinterfaceB{voidprint<>}C、abstractinterfaceBextendsA1,A2//A1、A2為已定義的接口{abstractvoidprint<>{};}D、interfaceB{voidprint<>;}16、A派生出子類B,B派生出子類C,并且在Java源代碼中有如下聲明:1.Aa0=newA<>;2.Aa1=newB<>;3.Aa2=newC<>;問以下哪個(gè)說法是正確的?〔DA、只有第1行能通過編譯B、第1、2行能通過編譯,但第3行編譯出錯(cuò)C、第1、2、3行能通過編譯,但第2、3行運(yùn)行時(shí)出錯(cuò)D、第1行、第2行和第3行的聲明都是正確的17、假設(shè)A類有如下定義,設(shè)a是A類的一個(gè)實(shí)例,下列語句調(diào)用哪個(gè)是錯(cuò)誤的?〔CclassA{inti;staticStrings;voidmethod1<>{}staticvoidmethod2<>{}}A、System.out.println<a.i>;B、a.method1<>;C、A.method1<>;D、A.method2<>18、以下關(guān)于繼承的敘述正確的是〔A.A、在Java中類只允許單一繼承B、在Java中一個(gè)類只能實(shí)現(xiàn)一個(gè)接口C、在Java中一個(gè)類不能同時(shí)繼承一個(gè)類和實(shí)現(xiàn)一個(gè)接口D、在Java中接口只允許單一繼承19、以下關(guān)于抽象類和接口的說法錯(cuò)誤的是〔EA、抽象類在Java語言中表示的是一種繼承關(guān)系,一個(gè)類只能使用一次繼承.但是一個(gè)類卻可以實(shí)現(xiàn)多個(gè)接口.B、在抽象類中可以沒有抽象方法C、實(shí)現(xiàn)抽象類和接口的類必須實(shí)現(xiàn)其中的所有方法,除非它也是抽象類.接口中的方法都不能被實(shí)現(xiàn)D、接口中定義的變量默認(rèn)是publicstaticfinal型,且必須給其初值,所以實(shí)現(xiàn)類中不能重新定義,也不能改變其值.E、接口中的方法都必須加上public關(guān)鍵字.4.2填空題1、 在Java語言中所有的類都是直接或間接地繼承_Object_____類而得到的.2、在Java中一個(gè)父類可以有___多___個(gè)子類,一個(gè)類只能有__一____個(gè)直接父類.3、Java中不能被實(shí)例化、只能被子類繼承的是____抽象_____類4、當(dāng)子類中的變量或方法與父類的變量和方法重名時(shí),子類的變量被______隱藏,子類中的方法被______重載.此時(shí),指向父類中的變量或方法,則用______super關(guān)鍵字實(shí)現(xiàn).5、用來定義一個(gè)類指定繼承父類的關(guān)鍵字是______extends,用來指定接口的繼承的關(guān)鍵字是______implements7、在已有類的基礎(chǔ)上構(gòu)造一個(gè)新的類,稱為類的______繼承.4.3簡答題1、請(qǐng)舉例簡要說明JAVA語言的繼承機(jī)制有何特點(diǎn)?解答:子類可以使用父類中的成員變量和方法,然后也可以添加自己的屬性和方法.如果子類沒有構(gòu)造方法,則編譯器首先為子類添加一個(gè)無參的構(gòu)造方法,然后調(diào)用父類的默認(rèn)構(gòu)造方法,如果子類有構(gòu)造方法,則先調(diào)用父類的默認(rèn)構(gòu)造方法,再調(diào)用子類的構(gòu)造方法;如果父類中沒有默認(rèn)構(gòu)造方法,則出錯(cuò).〔太難2、什么是繼承?什么是多重繼承和單繼承?Java采用何種機(jī)制來實(shí)現(xiàn)多重繼承?解答:繼承是面向?qū)ο缶幊痰囊环N特性,是保留原有類功能的前提下拓展或改寫部分功能,實(shí)現(xiàn)代碼復(fù)用的方式.單繼承就是一個(gè)類只可以繼承自一個(gè)父類,多繼承是指一個(gè)類可以同時(shí)繼承多個(gè)父類.java中使用的是單繼承,也就是一個(gè)類有且只能有一個(gè)父類,java中可以使用接口實(shí)現(xiàn)來實(shí)現(xiàn)類似多繼承的效果.3、簡述super關(guān)鍵字的意義,以及如何使用.解答:關(guān)鍵字super表示父類對(duì)象.通過在子類中使用super做前綴可以引用被子類隱藏的父類變量或被子類重寫的父類方法.super用來引用當(dāng)前對(duì)象的父類,雖然構(gòu)造方法不能夠繼承,但利用super關(guān)鍵字,子類構(gòu)造方法中也可以調(diào)用父類的構(gòu)造方法.1>操作被隱藏的變量和方法;2>使用super調(diào)用父類的構(gòu)造方法.4、抽象類是什么,抽象方法是什么.解答:抽象類就是不能使用new方法進(jìn)行實(shí)例化的類,即沒有具體實(shí)例對(duì)象的類.抽象類有點(diǎn)類似"模板"的作用,目的是根據(jù)其格式來創(chuàng)建和修改新的類.對(duì)象不能由抽象類直接創(chuàng)建,只可以通過抽象類派生出新的子類,再由其子類來創(chuàng)建對(duì)象.抽象方法就是以abstract修飾的方法,這種方法只聲明返回的數(shù)據(jù)類型、方法名稱和所需的參數(shù),沒有方法體,也就是說抽象方法只需要聲明而不需要實(shí)現(xiàn).當(dāng)一個(gè)方法為抽象方法時(shí),意味著這個(gè)方法必須被子類的方法所重寫,否則其子類的方法仍然是abstract的.4、接口是什么,以及它的用處體現(xiàn)在哪幾個(gè)方面.解答:接口是抽象類的一種,只包含常量和方法的定義,而沒有變量和方法的實(shí)現(xiàn),且其方法都是抽象方法.它的用處體現(xiàn)在下面幾個(gè)方面:1>通過接口實(shí)現(xiàn)不相關(guān)類的相同行為,而無需考慮這些類之間的關(guān)系.2>通過接口指明多個(gè)類需要實(shí)現(xiàn)的方法.3>通過接口了解對(duì)象的交互界面,而無需了解對(duì)象所對(duì)應(yīng)的類.5、什么是接口,什么是抽象類,接口和抽象類的區(qū)別?解答:抽象類就是不能使用new方法進(jìn)行實(shí)例化的類,即沒有具體實(shí)例對(duì)象的類.抽象類有點(diǎn)類似"模板"的作用,目的是根據(jù)其格式來創(chuàng)建和修改新的類.對(duì)象不能由抽象類直接創(chuàng)建,只可以通過抽象類派生出新的子類,再由其子類來創(chuàng)建對(duì)象.接口是抽象類的一種特殊形式,只包含常量和方法的定義,而沒有變量和方法的實(shí)現(xiàn),且其方法都是抽象方法.抽象層次不同,抽象類是對(duì)類的抽象,而接口是對(duì)行為的抽象.跨域?qū)哟尾煌?抽象類的跨域是具有相似的類,接口可以跨域不同的類.設(shè)計(jì)層次不同,抽象類是自底向上抽象而來,子類抽象父類接口是自頂向下設(shè)計(jì)的,無需知道子類.6、接口的用處體現(xiàn)哪幾個(gè)方面?解答:通過接口實(shí)現(xiàn)不相關(guān)類的相同行為,而無需考慮這些類之間的關(guān)系.通過接口指明多個(gè)類需要實(shí)現(xiàn)的方法.通過接口了解對(duì)象的交互界面,而無需了解對(duì)象所對(duì)應(yīng)的類.7、接口與實(shí)現(xiàn)類〔具體類關(guān)系:解答:多個(gè)無關(guān)的類可以實(shí)現(xiàn)同一個(gè)接口.一個(gè)類可以實(shí)現(xiàn)多個(gè)無關(guān)的接口.與繼承關(guān)系類似,接口與實(shí)現(xiàn)類之間存在多態(tài)性.14、子類與父類的繼承關(guān)系中,什么是屬性隱藏?什么是方法重寫?解答:隱藏是指當(dāng)父類和子類有相同名字的屬性的時(shí)候,父類的同名變量形式上不可見了.但是實(shí)際還是存在的.重寫是針對(duì)方法的,通常是父類的方法在子類中重新寫過.當(dāng)執(zhí)行子類的實(shí)例得時(shí)候,實(shí)際運(yùn)行的是子類的方法.在子類里面可以通過super.method〔來顯式的訪問.15、子類會(huì)繼承父類的所有方法和屬性么?解答:在同一個(gè)包中除private聲明外的方法都可以繼承.不在同一個(gè)包中,只繼承protected和public聲明的方法.〔太難了16、Java中的方法重寫<Overriding>和方法重載<Overloading>分別是什么?解答:Java中的方法重載發(fā)生在同一個(gè)類里面兩個(gè)或者是多個(gè)方法的方法名相同但是參數(shù)不同的情況.與此相對(duì),方法重寫是說子類重新定義了父類的方法.子類中重寫的方法和父類中被重寫的方法必須有相同的方法名,參數(shù)列表和返回類型,只是方法體不同.4.4綜合題1、寫出一個(gè)類People,并由該類做基類派生出子類Employee和Teacher.其中People類具有name、age兩個(gè)保護(hù)成員變量,分別為String類型、整型,且具有公有的getAge成員函數(shù),用于返回age變量的值.Employee類具有保護(hù)成員變量empno為String類型,Teacher類有teano為String類型和zc成員變量為String類型.解答://People類:publicabstractclassPeople{protectedStringname;protectedintage;publicintgetAge<>{returnage;}}//Employee類:publicclassEmployeeextendsPeople{protectedStringempno;}//Teacher類:publicclassTeacherextendsPeople{protectedStringteano;protectedStringzc;}2、定義一個(gè)新的類Student類,繼承Person類.要求:1增加"school"屬性為String類型.2重載Student類的構(gòu)造方法,Student<Stringn,Stringl,Stringschool>.3重寫Person類的info<>方法,增加school信息.classPerson{ privateStringname; privateStringlocation; Person<Stringname,Stringlocation>{ =name; this.location=location; } publicStringinfo<>{ return"name:"+name+"location:"+location; }}解答:classStudentextendsPerson{ privateStringschool; Student<Stringn,Stringl,Stringschool>{ super<n,l>; this.school=school; } publicStringinfo<>{ return<>+"school:"+school; }}3、定義一個(gè)接口,該接口中只有一個(gè)抽象方法getClassName<>.設(shè)計(jì)一個(gè)類Horse,該類實(shí)現(xiàn)接口ClassName中的方法getClassName<>,功能是獲取該類的類名.interfaceClassname{ publicStringgetclassname<>;}classHorseimplementsClassname{ publicStringgetclassname<>{ returnthis.getClass<>.getName<>; }}publicclassTest{ publicstaticvoidmain<String[]args>{ Classnamename=newHorse<>; System.out.println<name.getclassname<>>; }}4、編寫一個(gè)Java應(yīng)用程序,該程序中有1個(gè)Cat類繼承Object類,具有三個(gè)成員屬性Stringname、intfurColor、intheight,一個(gè)構(gòu)造方法Cat<Stringname,intfurColor,intheight>,并且重寫Cat類的toString<>和equals<Objectobj>成員方法.具體要求如下:a> 重寫toString成員方法,返回值是成員屬性Stringname的值.b> 重寫equals成員方法,如果兩個(gè)Cat對(duì)象的furColor和height屬性相等那么返回值是true,否則返回值是false.classCat{ intcolor; intheight,weight; publicCat<Stringname,intcolor,intheight,intweight>{ =name; this.color=color; this.height=height; this.weight=weight; } publicStringtoString<>{ return; } publicbooleanequals<Objectobj>{ if<obj==null>returnfalse; else{ if<objinstanceofCat>{ Catc=<Cat>obj; if<c.color==this.color&&c.height==this.height> returntrue; } } returnfalse; }}18.定義一個(gè)動(dòng)物類Animal,具有name成員變量,構(gòu)造方法和sing<>方法.定義一個(gè)Cat類繼承Animal類,增添furColor成員變量,重寫構(gòu)造方法和sing<>方法.定義一個(gè)Bird類繼承Animal類,增添featherColor成員變量,重寫構(gòu)造方法和sing<>方法.在main方法中接收用戶的輸入"1.Cat2.Bird"創(chuàng)建Cat或者Bird對(duì)象,并把該對(duì)象的引用賦值給一個(gè)Animal引用變量pet,最后調(diào)用引用變量pet的方法sing<>,并將結(jié)果輸出.packagecom.pm.Poly;classAnimal{ privateStringname; Animal<Stringname>{ =name; } publicvoidenjoy<>{ System.out.println<"叫聲">; }}classCatextendsAnimal{ privateStringeyesColor; Cat<Stringn,Stringc>{ super<n>; eyesColor=c; } publicvoidenjoy<>{ System.out.println<"貓叫聲">; }}classDogextendsAnimal{ privateStringfurColor; Dog<Stringn,Stringc>{ super<n>; furColor=c; } publicvoidenjoy<>{ System.out.println<"狗叫聲">; }}classBirdextendsAnimal{ privateStringfeatherColor; Bird<Stringn,Stringf>{ super<n>; featherColor=f; } publicvoidenjoy<>{ System.out.println<"鳥叫聲">; }}classLady{ privateStringname; privateAnimalpet; Lady<Stringname,Animalpet>{ =name;this.pet=pet; } publicvoidmyPetEnjoy<>{ pet.enjoy<>; }}publicclassTestPolymoph{ publicstaticvoidmain<String[]args>{ //TODOAuto-generatedmethodstub Ladyl3=newLady<"l3",newBird<"birdname","green">>; l3.myPetEnjoy<>; }}第5章JavaAPI5.1單項(xiàng)選擇題2、仔細(xì)分析下面程序,正確的輸出結(jié)果是〔publicclassTest1{ publicstaticvoidchangeStr<Stringstr>{ str="welcome"; } publicstaticvoidmain<String[]args>{ Stringstr="1234"; changeStr<str>; System.out.println<str>; }}A、welcome B、welcome1234C、1234 D、1234welcome解答:C〔太難3、Java語言中的一些常用的實(shí)用工具,如處理時(shí)間的Date類,處理變長數(shù)組的Vector類等,所在的包是〔.A、java.lang包 B、java.io包C、java.awt包 D、java.util包解答:D6、在Java中,所有類的根類是〔.B、java.lang.Class解答:A7、以下用于創(chuàng)建容器對(duì)象的類是〔AA、FrameB、CheckboxC、ButtonD、TextField8、在JAVA中,以下〔C類的對(duì)象以鍵-值的方式存儲(chǔ)對(duì)象A、java.util.ListB、java.util.ArrayListist9、給定如下Java程序代碼片段,編譯運(yùn)行這段代碼,結(jié)果是〔B.java.util.Hashtabletable=newjava.util.Hashtable<>;table.put<"name",null>;table.put<"name","Jack">;System.out.println<table.get<"name">>;A.

null

B.

Jack

C.

nullJack

D.運(yùn)行時(shí)出現(xiàn)異常5.2填空題1、java的___自動(dòng)垃圾收集機(jī)制大大減輕了程序員的負(fù)擔(dān),不用再編寫專門的內(nèi)存回收程序解決內(nèi)存分配問題2、Math.random<>可以產(chǎn)生一個(gè)在0和1之間的數(shù),請(qǐng)寫出產(chǎn)生一個(gè)在125與175之間的整數(shù)的語句Math.round<125+50*Math.random<>>5.3簡答題1、請(qǐng)舉例說明string類與StringBuffer類的區(qū)別?StringBuffer對(duì)象的內(nèi)容可以修改;而String對(duì)象一旦產(chǎn)生后就不可以被修改,重新賦值其實(shí)是兩個(gè)對(duì)象.StringBuffer的內(nèi)部實(shí)現(xiàn)方式和String不同,StringBuffer在進(jìn)行字符串處理時(shí),不生成新的對(duì)象,在內(nèi)存使用上要優(yōu)于String類.所以在實(shí)際使用時(shí),如果經(jīng)常需要對(duì)一個(gè)字符串進(jìn)行修改,使用StringBuffer要更加適合一些.2、寫出下面代碼的結(jié)果,并簡單說明原因publicclassTestString{publicstaticvoidlink<Stringa>{a+="World";}publicstaticvoidmain<String[]args>{Stringa="Hello";link<a>;System.out.println<a>;}}解答:這道題考兩個(gè)方面:1>.String對(duì)象的內(nèi)容是不能改變的,a+="World"并不是把a(bǔ)所指對(duì)象改變,而是先生成一個(gè)臨時(shí)String對(duì)象,其值為a+"World",然后在把這個(gè)臨時(shí)對(duì)象賦給a.2>.Java中函數(shù)參數(shù)傳遞方式為Callbyvalue,link方法中會(huì)生產(chǎn)a的一個(gè)拷貝,同樣指向a所指的對(duì)象,綜合以上兩點(diǎn),得出結(jié)果為Hello5.4綜合題1、請(qǐng)編寫程序,將下列字符串s="1,2;3,4,5;6,7,8"轉(zhuǎn)為二維實(shí)數(shù)數(shù)組?publicclassArrayParser{ publicstaticvoidmain<String[]args>{ double[][]d; Strings="1,2;3,4,5;6,7,8"; String[]sFirst=s.split<";">; d=newdouble[sFirst.length][]; for<inti=0;i<sFirst.length;i++>{ String[]sSecond=sFirst[i].split<",">; d[i]=newdouble[sSecond.length]; for<intj=0;j<sSecond.length;j++>{ d[i][j]=Double.parseDouble<sSecond[j]>;rintln<sSecond[j]>; } } for<inti=0;i<d.length;i++>{ for<intj=0;j<d[i].length;j++>{ System.out.print<d[i][j]+"">; } System.out.println<>; } }}第6章圖形用戶界面設(shè)計(jì)6.1單項(xiàng)選擇題1、下列哪一項(xiàng)不是直接或者間接繼承了Component類的子類.A、FrameB、PanelC、ButtonD、Menu解答:D2、下列哪一項(xiàng)是一個(gè)用于在GridLayout中的特定區(qū)域中放置多個(gè)組件的容器?A、AppletB、PanelC、ButtonD、Rectangle解答:B3、下列容器類中哪一個(gè)是從java.awt.Window繼承的?〔A、FrameB、PanelC、ContainerD、Applet解答:A4、下面哪個(gè)事件監(jiān)聽器可以處理在文本框中輸入回車鍵的事件______.A.ItemListenerB.ActionListenerC.KeyListenerD.MouseListener解答:B5、Frame類對(duì)象的默認(rèn)布局是什么布局?〔.A、FlowLayout布局 B、BorderLayout布局C、CardLayout布局 D、GridLayout布局解答:B6、Panel類對(duì)象的默認(rèn)布局是什么布局?〔.A、FlowLayout布局 B、BorderLayout布局C、CardLayout布局 D、GridLayout布局解答:A7、下列方法中,不屬于WindowListener接口的是<D>.A.windowOpened<>B.windowClosed<>C.windowActivated<>D.mouseDragged<>8、JAVA中,容器被重新設(shè)置后,哪種布局管理器的容器中的組件大小不隨容器大小的變化而改變〔B〔ACardLayout〔BFlowLayout〔CBorderLayout〔DGridLayout6.2填空題1、Java中GUI工具包有__java.awt____和__java.Swing____.2、通過調(diào)用方法__setLayout____可以改變當(dāng)前容器的布局方式.3、通過__add____方法向容器中添加組件.4、AWT布局管理器有______、______、______、______和______.5、圖形用戶界面的設(shè)計(jì)中有事件處理模型處理事件,在該模型中主要包括事件源、事件對(duì)象和________事件監(jiān)聽器6、_______BorderLayout布局管理器包括五個(gè)明顯的區(qū)域:東、南、西、北、中.6.3簡答題1、請(qǐng)舉例簡要說明JAVA語言使用事件監(jiān)聽器進(jìn)行事件處理的過程.首先事件監(jiān)聽器〔包含真正處理事件的代碼向事件源〔與事件關(guān)聯(lián)的控件,如按鈕、滾動(dòng)條注冊(cè),事件〔敲擊鍵盤,或點(diǎn)擊鼠標(biāo)發(fā)生時(shí),事件源向事件監(jiān)聽器發(fā)送一個(gè)事件對(duì)象〔如果在該事件源上注冊(cè)了多個(gè)事件監(jiān)聽器,則向所有的監(jiān)聽器發(fā)送1對(duì)于某種類型的事件XXXEvent,要想接收并處理這類事件,必須定義相應(yīng)的事件監(jiān)聽器類,該類需要實(shí)現(xiàn)與該事件相對(duì)應(yīng)的接口XXXListener;2事件源實(shí)例化以后,必須進(jìn)行授權(quán),注冊(cè)該類事件的監(jiān)聽器,使用addXXXListener<XXXListener>方法來注冊(cè)監(jiān)聽器.2、什么是布局管理器?解答:Java語言中,提供了布局管理器〔LayoutManager這個(gè)工具來管理組件在容器中的布局,如:排列順序,組件的大小、位置,當(dāng)窗口移動(dòng)或調(diào)整大小后組件如何變化等,而不使用直接設(shè)置組件位置和大小的方式.每個(gè)容器都有一個(gè)布局管理器,不同的布局管理器使用不同算法和策略,當(dāng)容器需要對(duì)某個(gè)組件進(jìn)行定位或判斷其大小尺寸時(shí),就會(huì)調(diào)用其對(duì)應(yīng)的布局管理器.容器可以通過選擇不同的布局管理器來決定布局.3、JAVA的事件處理模型主要涉及到哪3類對(duì)象,簡單介紹其內(nèi)容.解答:事件:用戶對(duì)界面操作在java語言上的描述,以類的形式出現(xiàn),例如鍵盤操作對(duì)應(yīng)的事件類是KeyEvent.事件源:事件發(fā)生的場所,通常就是各個(gè)組件,例如按鈕Button.事件處理者:接收事件對(duì)象并對(duì)其進(jìn)行處理的對(duì)象.4、簡述JAVA的組件Component類和容器Container類.解答:Java的圖形用戶界面的最基本組成部分是組件〔Component,組件是一個(gè)以圖形化的方式顯示在屏幕上并能與用戶進(jìn)行交互的對(duì)象,例如一個(gè)按鈕,一個(gè)標(biāo)簽等.組件不能獨(dú)立地顯示出來,必須將組件放在一定的容器中才可以顯示出來.容器java.awt.Container也是一個(gè)類,實(shí)際上是Component的子類,因此容器本身也是一個(gè)組件,具有組件的所有性質(zhì),但是它的主要功能是容納其它組件和容器.一個(gè)容器可以容納多個(gè)組件,并使它們成為一個(gè)整體.容器可以簡化圖形化界面的設(shè)計(jì),以整體結(jié)構(gòu)來布置界

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論