




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGE32數據結構<C++版>./《Java語言程序設計基礎教程》練習思考題參考答案第1章Java程序設計概述1.1單項選擇題1.編譯JavaApplication源文件將產生相應的字節碼文件,擴展名是什么 A..java B..class C..html D..exe解答:B2.Java語言具有許多優點和特點,下列選項中,哪個反映了Java中"一次編譯,隨處運行"的特點. A.簡單性 B.平臺無關性 C.面向對象性 D.安全性解答:B3.Java語言具有許多優點和特點,下列選項中,哪個反映了Java中并行機制的特點. A.多線程 B.平臺無關性 C.面向對象性 D.安全性解答:A4.在Java語言中,下列哪些語句關于內存回收的說明是正確的?A.程序員必須創建一個線程來釋放內存;B.內存回收程序負責釋放無用內存;C.內存回收程序允許程序員直接釋放內存;D.內存回收程序可以在指定的時間釋放內存對象解答:B5.一個Java源文件中最多只能有多少個public類. A.1個 B.2個 C.3個D.任意多個解答:A6.下面哪一個不是Java語言所具有的特點. A.沒有全局變量,在類的定義外部沒有任何的變量定義;B.不直接支持指針操作,而使用更安全的引用類型; C.支持子類對父類的多繼承; D.具有自動垃圾收集功能;解答:C7.下面哪一個不是Java開發工具包JDK的組成部分. A.Java的編譯器;B.Java的解釋器; C.Java的API繼承類庫; D.Eclipse開發工具;解答:C8.JDK提供的編譯器是〔. A.java.exe B.javac.exe C.javap.exe D.javaw.exe解答:B9.作為Java應用程序入口的main方法,其聲明格式可以是〔 A.publicvoidmain<String[]args> B.publicstaticvoidmain<String[]args> C.publicstaticvoidMain<String*args> D.publicintmain<String[]args>解答:B10.下列說法正確的是〔AA、JAVA程序的main方法必須寫在類里面B、JAVA程序中可以有多個main方法C、JAVA程序中類名必須與文件名一樣D、JAVA程序的main方法中如果只有一條語句,可以不用{}<大括號>括起來11.下列哪些語句關于Java內存回收的說明是正確的?〔BA、程序員必須創建一個線程來釋放內存B、內存回收程序負責釋放無用內存C、內存回收程序允許程序員直接釋放內存D、內存回收程序可以在指定的時間釋放內存對象1.2填空題1、開發與運行Java程序需要經過的三個主要步驟為____________、____________和____________.解答:編輯源程序、編譯生成字節碼和解釋運行字節碼2、使用Java編譯器___javac____.exe編譯源文件得到字節碼文件.3、Java應用程序必須通過Java解釋器__JAVA__.exe來解釋執行其字節碼文件.4、如果Java源文件中有一個類是public類,那么源文件的名字必須與這個類的名字完全_相同______,擴展名是.java.5、Java應用程序總是從主類的____main___方法開始執行.1.3簡答題13.簡述Java程序的開發過程?
〔1使用一個文字編輯器,編寫源文件.〔2使用java編譯器,編譯源文件得到字節碼文件.
〔3解釋運行字節碼,分兩種java應用程序必須通過java解釋器來解釋執行,java小應用程序必須使用解釋器和瀏覽器運行程序.1.什么是Java虛擬機?為什么Java被稱作是"平臺無關的編程語言"?解答:Java虛擬機是一個可以執行Java字節碼的虛擬機進程.Java源文件被編譯成能被Java虛擬機執行的字節碼文件.Java被設計成允許應用程序可以運行在任意的平臺,而不需要程序員為每一個平臺單獨重寫或者是重新編譯.Java虛擬機讓這個變為可能,因為它知道底層硬件平臺的指令長度和其他特性.3.Java語言的關鍵特點有哪些?解答:簡單性平臺無關性面向對象性安全性分布式多線程動態性1.4綜合題第2章Java基本的程序設計結構2.1單項選擇題1、下面哪一項在java中是非法的標識符?〔A.$user B.pointC.You&meD._endline解答:C2、若有定義inta=9,b=6;那么a>b的值是:〔A.0 B.1C.false D.true解答:D3、執行完以下代碼int[]x=newint[25];后,以下說明正確的是:〔A.x[24]為0 B.x[24]未定義 C.x[25]為0 D.x[0]為空解答:A4、Java應用程序的main方法中有以下語句,則輸出的結果是〔.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、設x=1,y=2,z=3,則表達式y+=z--/++x的值是〔A.3 B.3.5C.4 D.5解答:A5、執行System.out.println<5/4>,這條代碼的輸出結果是〔A.1 B.1.25C.1.5 D.0解答:A6、下列語句有錯誤的是:〔A.int[]a;B.int[]b=newint[10];C.intc[]=newint[];D.intd[]=null; 解答:C7、下列語句有錯誤的是:〔A.inta[][]=newint[5][5];B.int[][]b=newint[5][5];C.int[]c[]=newint[5][5];D.int[][]d=newint[5,5];解答:D8、下列哪一個不屬于Java中的8種基本數據類型〔A.double;B.char;C.int;D.String;解答:D9、以下數據類型存儲空間最大的是〔.〔Abyte〔Blong〔Cfloat〔Dchar解答:B10、System.out.println<"5"+2>;的輸出結果應該是〔.A52B7C2D5答案:A11.在類的定義中可以有兩個同名方法,每個方法的參數不同,這種現象稱為方法〔D.〔A封裝〔B繼承〔C覆蓋〔D重載12.java中定義字符串Strings="pzhu",下面操作可以取得字符串長度的是〔.A.s.length<>B.s.lengthC.s.size<>D.length<s>解答:A13.指出下列程序運行的結果〔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.下面代碼的運行結果為:〔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.關于以下程序段,正確的說法是〔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都將執行B、行4執行,行6不執行C、行6執行,行4不執行D、行4、行6都不執行16.Javaapplication中的主類需包含main方法,main方法的返回類型是什么?〔DA、intB、floatC、doubleD、void17.為一個boolean類型變量賦值時,可以使用<B>方式A、boolean=1;B、booleana=<9>=10>;C、booleana="真";D、booleana==false;18.表達式<11+3*8>/4%3的值是<D>A、31B、0C、1D、219.運算符優先級別排序正確的是〔A〔太難A、由高向低分別是:<>、!、算術運算符、關系運算符、邏輯運算符、賦值運算符;B、由高向低分別是:<>、關系運算符、算術運算符、賦值運算符、!、邏輯運算符;C、由高向低分別是:<>、算術運算符、邏輯運算符、關系運算符、!、賦值運算符;D、由高向低分別是:<>、!、關系運算符、賦值運算符、算術運算符、邏輯運算符;20.下列值不為true的表達式有〔C.A、"john"=="john"B、"john".equals<"john">C、"john"="john"D、"john".equals<newString<"john">>21、下面的方法,當輸入為2的時候返回值是多少?〔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開始一直往下運行.22、下面有關for循環的描述正確的是〔AA、for循環體語句中,可以包含多條語句,但要用大括號括起來B、for循環只能用于循環次數已經確定的情況C、在for循環中,不能使用break語句跳出循環D、for循環是先執行循環體語句,后進行條件判斷23、score是一個整數數組,有五個元素,已經正確初始化并賦值,仔細閱讀下面代碼,程序運行結果是〔Btemp=score[0];for<intindex=1;index<5;index++>{if<score[index]<temp>{temp=score[index];}}A.求最大數B.求最小數C.找到數組最后一個元素D.編譯出錯26、2.2填空題1、Java語言是一種完全的_面向對象_程序設計語言2、Strings1="China";intn=s1.length<>;n的值為_5__3、在Java語言中,基本數據類型包括:____整數類型、____浮點類型、____字符類型_和____布爾類型17、在Java的基本數據類型中,char型采用Unicode編碼方案,每個Unicode碼占用__2___字節內存空間,這樣,無論是中文字符還是英文字符,都是占用__2___字節內存空間.18、設x=2,則表達式<x++>/3的值是__0___.20、設有數組定義:intMyIntArray[]={10,20,30,40,50,60,70};則執行以下幾個語句后的輸出結果是: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、數組對象的長度在數組對象創建之后,就__不會____改變.數組元素的下標總是從___0___開始.22、對于數組int[][]t={{1,2,3},{4,5,6}}來說,t.length等于__2___,t[0].length等于__3____.2.3簡答題1、Java的基本數據類型有哪8種,每種類型的內存空間分別是多少.2.4綜合題26、編程計算10~20的整數的平方值,將結果保存在一個數組中.27、編寫一個程序使之從鍵盤讀入10個整數存入整型數組a中,并輸出這10個整數的最大值和最小值.importjava.util.Scanner;publicclasslianxi30{publicstaticvoidmain<Stringargs[]>{ Scannertemp;float[]sum=newfloat[11];floatmax,min;for<inti=0;i<10;i++>{ System.out.println<"請輸入第一個數字<回車結束>:">; 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、如果我國經濟以每年10%的速度保持穩定增長,請編寫一個程序,計算每年達到多少,多少年可以實現總量翻兩番.classexA4_1{publicstaticvoidmain<Stringargs[]>{inta=0;doublei=0.10,sum=1;while<sum<=4>{sum=<i+1>*sum;a++;System.out.println<"第"+a+"年達到"+sum>;}System.out.println<"需要"+a+"年實現兩番">;}}第3章類和對象3.1單項選擇題1、下列關于變量的敘述哪個是錯的?〔A.實例變量是類的成員變量.B.在方法中定義的局部變量在該方法被執行時創建.C.實例變量用關鍵字static聲明.D.局部變量在使用前必須被初始化.解答:C2、在Java語言中,下列哪個包是編譯器自動導入的?〔A.java.applet B.java.langC.java.io D.java.awt解答:B6、不允許作為類及類成員的訪問控制符的是〔.A.public B.privateC.static D.protected解答:C7、為AB類的一個無形式參數無返回值的方法method書寫方法頭,使得使用類名AB作為前綴就可以調用它,該方法頭的形式為〔.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提供的許多類在不同的包中,使用下面哪個語句可以引入包中的類.A.packageB.includeC.importD.add解答:C11、已知A類被打包在packageA,B類被打包在packageB,且B類被聲明為public,且有一個成員變量x被聲明為protected控制方式.C類也位于packageA包,且繼承了B類.則以下說法正確的是:〔A、A類的實例不能訪問到B類的實例B、A類的實例能夠訪問到B類一個實例的x成員C、C類的實例可以訪問到B類一個實例的x成員D、C類的實例不能訪問到B類的實例解答:C〔太難13、在Java中,關于final關鍵字的說法正確的是〔A、如果修飾變量,則一旦賦了值,就等同一個常量.B、如果修飾類,則該類只能被一個子類繼承.C、如果修飾方法,則該方法不能在子類中被覆蓋.D、如果修飾方法,則該方法所在的類不能被繼承.解答:A,C14、關于構造方法以下說法錯誤的是<D>.〔A構造方法名必須與類名一致〔B構造方法可以重載〔C構造方法是通過new來調用〔D每個類都必須編寫構造方法代碼15、關于類的定義以下說法錯誤〔B.〔A類定義使用class關鍵字〔B每個類中必須有一個main方法〔C一個包可以包含多個類〔Djava中所有類都是Object類的子類16、在創建對象時必須〔CA>先聲明對象,然后才能使用對象B>先聲明對象,為對象分配內存空間,然后才能使用對象C>先聲明對象,為對象分配內存空間,對對象初始化,然后才能使用對象D>上述說法都對17、在調用方法時,若要使方法改變實參的值,可以〔BA>用基本數據類型作為參數B>用對象作為參數C>A和B都對D>A和B都不對18、關于以下程序代碼的說明正確的是〔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行不能通過編譯,因為引用了私有靜態變量B、10行不能通過編譯,因為x是私有靜態變量C、程序通過編譯,輸出結果為:x=103D、程序通過編譯,輸出結果為:x=10219、以下關于構造函數的描述錯誤的是〔A.A、構造函數的返回類型只能是void型.B、構造函數是類的一種特殊函數,它的方法名必須與類名相同.C、構造函數的主要作用是完成對類的對象的初始化工作.D、一般在創建新對象時,系統會自動調用構造函數.20、Java中,在如下所示的Test類中,共有〔C個構造方法.publicclassTest{privateintx;publicTest<>{x=35;}publicvoidTest<doublef>{This.x=<int>f;}publicTest<Strings>{}}A、0B、1C、2D、321、在Java中,關于構造方法,下列說法錯誤的是<C>A、構造方法的名稱必須與類名相同B、構造方法可以帶參數C、構造方法不可以重載D、構造方法絕對不能有返回值22、在Java語言中,下列關于類的繼承的描述,正確的是〔B.A、一個類可以繼承多個父類B、一個類可以具有多個子類C、子類可以使用父類的所有方法D、子類一定比父類有更多的成員方法23、分析選項中關于Java中this關鍵字的說法正確的是〔AA、this關鍵字是在對象內部指代自身的引用B、this關鍵字可以在類中的任何位置使用C、this關鍵字和類關聯,而不是和特定的對象關聯D、同一個類的不同對象共用一個this24、在Java接口中,下列選項中有效的方法聲明是〔A.A、publicvoidaMethod<>;B、publicfinalvoidaMethod<>;C、protectedvoidaMethod<>;D、privatevoidaMethod<>;25、下列選項中關于Java中super關鍵字的說法正確的是〔A.A、super關鍵字是在子類對象內部指代其父類對象的引用B、super關鍵字不僅可以指代子類的直接父類,還可以指代父類的父類C、子類通過super關鍵字只能調用父類的方法,而不能調用父類的屬性D、子類通過super關鍵字只能調用父類的屬性,而不能調用父類的方法3.2填空題1、在Java程序中,通過類的定義只能實現____單重繼承____,但通過接口的定義可以實現多____多重繼承____.2、_抽象〔abstract___方法是一種僅有方法頭,沒有具體方法體和操作實現的方法,該方法必須在抽象類之中定義.__final____方法是不能被當前類的子類重新定義的方法.3、面向對象程序設計的三個特征是_____封裝、____多態、____繼承4、Java是面向對象語言,類是客觀事物的_抽象____,而對象是類的_實例____.5、如果在子類中想使用被子類隱藏的父類成員變量或方法,就可以使用關鍵字__super_____.6、Java中有一種叫作___構造方法__的特殊方法用來對類的對象成員進行初始化.7、JAVA語言中提供了兩種類型的字符串類來處理字符串,它們是___String_和___StringBuffer類8、Java語言中,所有的類都是___Object的子類,Java的窗口通常是___JFrame__的子類,___抽象_類只能定義但不能被實例化,_最終_類不能被繼承9、一般Java程序的類體由兩部分組成:一部分是_屬性_,另一部分是_方法_10、分別用__class_關鍵字來定義類,用_new__關鍵字來分配實例存儲空間.11、Java中類成員的限定詞有以下幾種:__private__,public___,protected___,_缺省__.其中,_public__的限定的范圍最大.類中限定為_private__的成員,只能被這個類本身內部訪問.12、Java類中,如果類的定義者沒有顯式的定義任何構造方法,系統將自動提供一個___無參默認_構造方法.13、在子類中定義與父類的相同的方法,若在多個子類中定義相同的方法,則可以調用不同子類中的相同方法而實現不同的功能,這實現了程序運行時的______多態.3.3簡答題1.簡單闡述方法的重載和方法的重寫之間的區別解答:重寫是子類的方法覆蓋父類的方法,要求方法名和參數都相同重載是在同一個類中的兩個或兩個以上的方法,擁有相同的方法名,但是參數卻不相同2、簡述實例變量和類變量的區別.解答:類變量也叫靜態變量,也就是在變量前加了static的變量;實例變量也叫對象變量,即沒加static的變量;區別在于:類變量是所有對象共有,其中一個對象將它值改變,其他對象得到的就是改變后的結果;而實例變量則屬對象私有,某一個對象將其值改變,不影響其他對象;2、簡述實例方法和類方法的區別解答:實例方法可以對當前對象的實例變量進行操作,也可以對類變量進行操作,實例方法由實例對象調用.但類方法不能訪問實例變量,只能訪問類變量.類方法可以由類名直接調用,也可由實例對象進行調用.類方法中不能使用this或super關鍵字.3、面向對象的三個基本特征是什么,分別簡單介紹每個特征.解答:三大特性是:封裝,繼承,多態.封裝性就是把對象的屬性和服務結合成一個獨立的單位,并盡可能隱蔽對象的內部細節.特殊類的對象擁有其一般類的全部屬性與服務,稱作特殊類對一般類的繼承.對象的多態性是指在一般類中定義的屬性或服務被特殊類繼承之后,可以具有不同的數據類型或表現出不同的行為.這使得同一個屬性或服務在一般類及其各個特殊類中具有不同的語義.4、簡單闡述成員變量和局部變量的區別.解答:1>成員變量在整個類內都有效,局部變量只在定義它的方法內有效.2>成員變量又分為實例成員變量〔簡稱實例變量和類變量〔也稱靜態變量,如果成員變量的類型前面加上關鍵字static,這樣的成員變量稱為類變量或靜態變量.3>如果局部變量的名字與成員變量的名字相同,則成員變量被隱藏,也就是說,這個成員變量在這個方法內暫時失效.這時如果想在該方法內使用成員變量,必須使用關鍵字this.5、簡述對象的引用和實體.解答:當用類創建一個對象時,類中的成員變量被分配內存空間,這些內存空間稱為該對象的實體,而對象中存放著引用,以確保實體由該對象操作使用.沒有實體的對象稱為空對象,空對象不能使用,即不能讓一個空對象去調用方法產生行為.6、簡述this關鍵字的意義,以及它在成員方法和構造方法中如何使用.解答:this是Java的一個關鍵字,表示某個對象.this可以出現在實例方法和構造方法中,但不可以出現在類方法中.this可以出現在實例方法和構造方法中,但不可以出現在類方法中.this關鍵字出現在類的構造方法中時,代表使用該構造方法所創建的對象.實例方法必須通過對象來調用,當this關鍵字出現在類的實例方法中時,代表正在調用該方法的當前對象.成員函數中定義了和成員變量中相同的變量時,引用成員變量要用this;構造函數中調用同一個類的其他構造函數時用this.7、簡單描述Java的參數傳值中的兩種方式,基本數據類型參數的傳值和引用類型參數的傳值?解答:在基本數據類型參數的傳值中,基本數據類型的參數向該參數傳遞的值的級別不可以高于該參數的級別.在引用類型參數的傳值中,Java的引用類型數據包括對象、數組和接口,當參數是引用類型時,"傳值"傳遞的是變量的引用而不是變量所引用的實體.如果改變參數變量所引用的實體,就會導致原變量的實體發生同樣的變化,但是如果改變參數的引用不會影響向其傳值的變量的引用.8、基本數據類型和對象作為參數傳遞的不同?解答:〔1基本數據類型作為參數在方法中傳遞的是值傳遞.〔2對象是引用傳遞,當對象作為參數傳遞時,傳遞的是對象的地址.3.4綜合題1、定義一個"點"<Point>類用來表示三維空間中的點,類體的成員變量x,y,z分別表示三維空間的坐標.類體中具有如下成員方法的定義:1構造方法Point〔可以生成具有特定坐標的點對象.2setX<>,setY<>,setZ<>為可以設置三個坐標的方法.3.getDistance<>為可以計算該點距離原點距離平方的方法.解答: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、編寫一個Java應用程序Test類,實現成員方法max<a,b>的重載.具體要求如下:a> 編寫voidmax<inta,intb>成員方法,對兩個整數進行大小的比較,輸出打印較大的那個整數.b> 編寫voidmax<floata,floatb>成員方法,對兩個float數進行大小的比較,輸出打印較大的那個float數.c> 編寫voidmax<doublea,doubleb>成員方法,對兩個double數進行大小的比較,輸出打印較大的那個double數.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、編寫一個矩形類對數學中的矩形進行抽象描述,并具有方法可以計算矩形的周長和面積,具體分為以下三個子任務完成.〔1創建Rectangle類,添加屬性width、height,并定義構造方法Rectangle<double_width,double_height>;〔2在Rectangle類中添加兩種方法computCircum<>和computArea<>分別計算矩形的周長和面積;〔3編程利用Rectangle對象輸出一個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章繼承、接口和內部類4.1單項選擇題1、Java中用于定義接口的關鍵字是〔A、import B、packageC、class D、interface解答:D2、以下關于abstract的說法,正確的是<>A、abstract只能修飾類B、abstract只能修飾方法C、abstract類中必須有abstract方法D、abstarct方法所在的類必須用abstract修飾解答:D3、下列哪種說法是正確的〔A、私有方法不能被子類覆蓋.B、子類可以覆蓋超類中的任何方法.C、覆蓋方法可以聲明自己拋出的異常多于那個被覆蓋的方法.D、覆蓋方法中的參數清單必須是被覆蓋方法參數清單的子集.解答:A4、關于類繼承的說法,正確的是〔A、Java類允許多重繼承B、Java接口允許多繼承C、接口和類都允許多繼承D、接口和類都不允許多繼承解答:B5、 關于抽象類,正確的是______.A.抽象類中不可以有非抽象方法B.某個非抽象類的父類是抽象類,則這個子類必須重載父類的所有抽象方法C.可以用抽象類直接去創建對象D.接口和抽象類是同一個概念解答:B8、抽象類A和抽象類B的定義如下:abstractclassA{ abstractintgetinfo<>;}publicclassBextendsA{ privateinta=0; publicintgetinfo<>{ returna; } publicstaticvoidmain<Stringargs[]>{Bb=newB<>; System.out.println<b.getinfo<>>; }}關于上述代碼說明正確的是〔.A.輸出結果為0 B.通過編譯但沒有輸出任何結果C.第5行不能通過編譯 D.程序第2行不能通過編譯解答:A9、 下面程序的運行結果是______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、設有下面兩個類的定義:classPerson{ longid;//身份證號Stringname;//姓名}classStudentextendsPerson{ intscore;//入學總分intgetScore<>{returnscore;}} 問:類Person和類Student的關系是〔A、包含關系 B、繼承關系C、關聯關系 D、無關系,上述類定義有語法錯誤解答:B11、以下程序代碼錯誤的是〔B.abstractclassP{}classAextendsP{}abstractclassBextendsP{}〔APp=newA<>;〔BPp=newB<>;〔CAa=newA<>;〔DPp=newP<>{voidfoo<>{}};12、下面是People和Child類的定義和構造方法,每個構造方法都輸出編號.在執行newChild<"mike">的時候都有哪些構造方法被順序調用?請選擇輸出結果<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、選項中哪一行代碼可以替換題目中//addcodehere而不產生編譯錯誤?〔ApublicabstractclassMyClass{publicintconstInt=5;//addcodeherepublicvoidmethod<>{}}Apublicabstractvoidmethod<inta>;BconstInt=constInt+5;Cpublicintmethod<>;DpublicabstractvoidanotherMethod<>{}15、以下哪項是接口的正確定義?〔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<>;問以下哪個說法是正確的?〔DA、只有第1行能通過編譯B、第1、2行能通過編譯,但第3行編譯出錯C、第1、2、3行能通過編譯,但第2、3行運行時出錯D、第1行、第2行和第3行的聲明都是正確的17、假設A類有如下定義,設a是A類的一個實例,下列語句調用哪個是錯誤的?〔CclassA{inti;staticStrings;voidmethod1<>{}staticvoidmethod2<>{}}A、System.out.println<a.i>;B、a.method1<>;C、A.method1<>;D、A.method2<>18、以下關于繼承的敘述正確的是〔A.A、在Java中類只允許單一繼承B、在Java中一個類只能實現一個接口C、在Java中一個類不能同時繼承一個類和實現一個接口D、在Java中接口只允許單一繼承19、以下關于抽象類和接口的說法錯誤的是〔EA、抽象類在Java語言中表示的是一種繼承關系,一個類只能使用一次繼承.但是一個類卻可以實現多個接口.B、在抽象類中可以沒有抽象方法C、實現抽象類和接口的類必須實現其中的所有方法,除非它也是抽象類.接口中的方法都不能被實現D、接口中定義的變量默認是publicstaticfinal型,且必須給其初值,所以實現類中不能重新定義,也不能改變其值.E、接口中的方法都必須加上public關鍵字.4.2填空題1、 在Java語言中所有的類都是直接或間接地繼承_Object_____類而得到的.2、在Java中一個父類可以有___多___個子類,一個類只能有__一____個直接父類.3、Java中不能被實例化、只能被子類繼承的是____抽象_____類4、當子類中的變量或方法與父類的變量和方法重名時,子類的變量被______隱藏,子類中的方法被______重載.此時,指向父類中的變量或方法,則用______super關鍵字實現.5、用來定義一個類指定繼承父類的關鍵字是______extends,用來指定接口的繼承的關鍵字是______implements7、在已有類的基礎上構造一個新的類,稱為類的______繼承.4.3簡答題1、請舉例簡要說明JAVA語言的繼承機制有何特點?解答:子類可以使用父類中的成員變量和方法,然后也可以添加自己的屬性和方法.如果子類沒有構造方法,則編譯器首先為子類添加一個無參的構造方法,然后調用父類的默認構造方法,如果子類有構造方法,則先調用父類的默認構造方法,再調用子類的構造方法;如果父類中沒有默認構造方法,則出錯.〔太難2、什么是繼承?什么是多重繼承和單繼承?Java采用何種機制來實現多重繼承?解答:繼承是面向對象編程的一種特性,是保留原有類功能的前提下拓展或改寫部分功能,實現代碼復用的方式.單繼承就是一個類只可以繼承自一個父類,多繼承是指一個類可以同時繼承多個父類.java中使用的是單繼承,也就是一個類有且只能有一個父類,java中可以使用接口實現來實現類似多繼承的效果.3、簡述super關鍵字的意義,以及如何使用.解答:關鍵字super表示父類對象.通過在子類中使用super做前綴可以引用被子類隱藏的父類變量或被子類重寫的父類方法.super用來引用當前對象的父類,雖然構造方法不能夠繼承,但利用super關鍵字,子類構造方法中也可以調用父類的構造方法.1>操作被隱藏的變量和方法;2>使用super調用父類的構造方法.4、抽象類是什么,抽象方法是什么.解答:抽象類就是不能使用new方法進行實例化的類,即沒有具體實例對象的類.抽象類有點類似"模板"的作用,目的是根據其格式來創建和修改新的類.對象不能由抽象類直接創建,只可以通過抽象類派生出新的子類,再由其子類來創建對象.抽象方法就是以abstract修飾的方法,這種方法只聲明返回的數據類型、方法名稱和所需的參數,沒有方法體,也就是說抽象方法只需要聲明而不需要實現.當一個方法為抽象方法時,意味著這個方法必須被子類的方法所重寫,否則其子類的方法仍然是abstract的.4、接口是什么,以及它的用處體現在哪幾個方面.解答:接口是抽象類的一種,只包含常量和方法的定義,而沒有變量和方法的實現,且其方法都是抽象方法.它的用處體現在下面幾個方面:1>通過接口實現不相關類的相同行為,而無需考慮這些類之間的關系.2>通過接口指明多個類需要實現的方法.3>通過接口了解對象的交互界面,而無需了解對象所對應的類.5、什么是接口,什么是抽象類,接口和抽象類的區別?解答:抽象類就是不能使用new方法進行實例化的類,即沒有具體實例對象的類.抽象類有點類似"模板"的作用,目的是根據其格式來創建和修改新的類.對象不能由抽象類直接創建,只可以通過抽象類派生出新的子類,再由其子類來創建對象.接口是抽象類的一種特殊形式,只包含常量和方法的定義,而沒有變量和方法的實現,且其方法都是抽象方法.抽象層次不同,抽象類是對類的抽象,而接口是對行為的抽象.跨域層次不同,抽象類的跨域是具有相似的類,接口可以跨域不同的類.設計層次不同,抽象類是自底向上抽象而來,子類抽象父類接口是自頂向下設計的,無需知道子類.6、接口的用處體現哪幾個方面?解答:通過接口實現不相關類的相同行為,而無需考慮這些類之間的關系.通過接口指明多個類需要實現的方法.通過接口了解對象的交互界面,而無需了解對象所對應的類.7、接口與實現類〔具體類關系:解答:多個無關的類可以實現同一個接口.一個類可以實現多個無關的接口.與繼承關系類似,接口與實現類之間存在多態性.14、子類與父類的繼承關系中,什么是屬性隱藏?什么是方法重寫?解答:隱藏是指當父類和子類有相同名字的屬性的時候,父類的同名變量形式上不可見了.但是實際還是存在的.重寫是針對方法的,通常是父類的方法在子類中重新寫過.當執行子類的實例得時候,實際運行的是子類的方法.在子類里面可以通過super.method〔來顯式的訪問.15、子類會繼承父類的所有方法和屬性么?解答:在同一個包中除private聲明外的方法都可以繼承.不在同一個包中,只繼承protected和public聲明的方法.〔太難了16、Java中的方法重寫<Overriding>和方法重載<Overloading>分別是什么?解答:Java中的方法重載發生在同一個類里面兩個或者是多個方法的方法名相同但是參數不同的情況.與此相對,方法重寫是說子類重新定義了父類的方法.子類中重寫的方法和父類中被重寫的方法必須有相同的方法名,參數列表和返回類型,只是方法體不同.4.4綜合題1、寫出一個類People,并由該類做基類派生出子類Employee和Teacher.其中People類具有name、age兩個保護成員變量,分別為String類型、整型,且具有公有的getAge成員函數,用于返回age變量的值.Employee類具有保護成員變量empno為String類型,Teacher類有teano為String類型和zc成員變量為String類型.解答://People類:publicabstractclassPeople{protectedStringname;protectedintage;publicintgetAge<>{returnage;}}//Employee類:publicclassEmployeeextendsPeople{protectedStringempno;}//Teacher類:publicclassTeacherextendsPeople{protectedStringteano;protectedStringzc;}2、定義一個新的類Student類,繼承Person類.要求:1增加"school"屬性為String類型.2重載Student類的構造方法,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、定義一個接口,該接口中只有一個抽象方法getClassName<>.設計一個類Horse,該類實現接口ClassName中的方法getClassName<>,功能是獲取該類的類名.interfaceClassname{ publicStringgetclassname<>;}classHorseimplementsClassname{ publicStringgetclassname<>{ returnthis.getClass<>.getName<>; }}publicclassTest{ publicstaticvoidmain<String[]args>{ Classnamename=newHorse<>; System.out.println<name.getclassname<>>; }}4、編寫一個Java應用程序,該程序中有1個Cat類繼承Object類,具有三個成員屬性Stringname、intfurColor、intheight,一個構造方法Cat<Stringname,intfurColor,intheight>,并且重寫Cat類的toString<>和equals<Objectobj>成員方法.具體要求如下:a> 重寫toString成員方法,返回值是成員屬性Stringname的值.b> 重寫equals成員方法,如果兩個Cat對象的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.定義一個動物類Animal,具有name成員變量,構造方法和sing<>方法.定義一個Cat類繼承Animal類,增添furColor成員變量,重寫構造方法和sing<>方法.定義一個Bird類繼承Animal類,增添featherColor成員變量,重寫構造方法和sing<>方法.在main方法中接收用戶的輸入"1.Cat2.Bird"創建Cat或者Bird對象,并把該對象的引用賦值給一個Animal引用變量pet,最后調用引用變量pet的方法sing<>,并將結果輸出.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單項選擇題2、仔細分析下面程序,正確的輸出結果是〔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語言中的一些常用的實用工具,如處理時間的Date類,處理變長數組的Vector類等,所在的包是〔.A、java.lang包 B、java.io包C、java.awt包 D、java.util包解答:D6、在Java中,所有類的根類是〔.B、java.lang.Class解答:A7、以下用于創建容器對象的類是〔AA、FrameB、CheckboxC、ButtonD、TextField8、在JAVA中,以下〔C類的對象以鍵-值的方式存儲對象A、java.util.ListB、java.util.ArrayListist9、給定如下Java程序代碼片段,編譯運行這段代碼,結果是〔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.運行時出現異常5.2填空題1、java的___自動垃圾收集機制大大減輕了程序員的負擔,不用再編寫專門的內存回收程序解決內存分配問題2、Math.random<>可以產生一個在0和1之間的數,請寫出產生一個在125與175之間的整數的語句Math.round<125+50*Math.random<>>5.3簡答題1、請舉例說明string類與StringBuffer類的區別?StringBuffer對象的內容可以修改;而String對象一旦產生后就不可以被修改,重新賦值其實是兩個對象.StringBuffer的內部實現方式和String不同,StringBuffer在進行字符串處理時,不生成新的對象,在內存使用上要優于String類.所以在實際使用時,如果經常需要對一個字符串進行修改,使用StringBuffer要更加適合一些.2、寫出下面代碼的結果,并簡單說明原因publicclassTestString{publicstaticvoidlink<Stringa>{a+="World";}publicstaticvoidmain<String[]args>{Stringa="Hello";link<a>;System.out.println<a>;}}解答:這道題考兩個方面:1>.String對象的內容是不能改變的,a+="World"并不是把a所指對象改變,而是先生成一個臨時String對象,其值為a+"World",然后在把這個臨時對象賦給a.2>.Java中函數參數傳遞方式為Callbyvalue,link方法中會生產a的一個拷貝,同樣指向a所指的對象,綜合以上兩點,得出結果為Hello5.4綜合題1、請編寫程序,將下列字符串s="1,2;3,4,5;6,7,8"轉為二維實數數組?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章圖形用戶界面設計6.1單項選擇題1、下列哪一項不是直接或者間接繼承了Component類的子類.A、FrameB、PanelC、ButtonD、Menu解答:D2、下列哪一項是一個用于在GridLayout中的特定區域中放置多個組件的容器?A、AppletB、PanelC、ButtonD、Rectangle解答:B3、下列容器類中哪一個是從java.awt.Window繼承的?〔A、FrameB、PanelC、ContainerD、Applet解答:A4、下面哪個事件監聽器可以處理在文本框中輸入回車鍵的事件______.A.ItemListenerB.ActionListenerC.KeyListenerD.MouseListener解答:B5、Frame類對象的默認布局是什么布局?〔.A、FlowLayout布局 B、BorderLayout布局C、CardLayout布局 D、GridLayout布局解答:B6、Panel類對象的默認布局是什么布局?〔.A、FlowLayout布局 B、BorderLayout布局C、CardLayout布局 D、GridLayout布局解答:A7、下列方法中,不屬于WindowListener接口的是<D>.A.windowOpened<>B.windowClosed<>C.windowActivated<>D.mouseDragged<>8、JAVA中,容器被重新設置后,哪種布局管理器的容器中的組件大小不隨容器大小的變化而改變〔B〔ACardLayout〔BFlowLayout〔CBorderLayout〔DGridLayout6.2填空題1、Java中GUI工具包有__java.awt____和__java.Swing____.2、通過調用方法__setLayout____可以改變當前容器的布局方式.3、通過__add____方法向容器中添加組件.4、AWT布局管理器有______、______、______、______和______.5、圖形用戶界面的設計中有事件處理模型處理事件,在該模型中主要包括事件源、事件對象和________事件監聽器6、_______BorderLayout布局管理器包括五個明顯的區域:東、南、西、北、中.6.3簡答題1、請舉例簡要說明JAVA語言使用事件監聽器進行事件處理的過程.首先事件監聽器〔包含真正處理事件的代碼向事件源〔與事件關聯的控件,如按鈕、滾動條注冊,事件〔敲擊鍵盤,或點擊鼠標發生時,事件源向事件監聽器發送一個事件對象〔如果在該事件源上注冊了多個事件監聽器,則向所有的監聽器發送1對于某種類型的事件XXXEvent,要想接收并處理這類事件,必須定義相應的事件監聽器類,該類需要實現與該事件相對應的接口XXXListener;2事件源實例化以后,必須進行授權,注冊該類事件的監聽器,使用addXXXListener<XXXListener>方法來注冊監聽器.2、什么是布局管理器?解答:Java語言中,提供了布局管理器〔LayoutManager這個工具來管理組件在容器中的布局,如:排列順序,組件的大小、位置,當窗口移動或調整大小后組件如何變化等,而不使用直接設置組件位置和大小的方式.每個容器都有一個布局管理器,不同的布局管理器使用不同算法和策略,當容器需要對某個組件進行定位或判斷其大小尺寸時,就會調用其對應的布局管理器.容器可以通過選擇不同的布局管理器來決定布局.3、JAVA的事件處理模型主要涉及到哪3類對象,簡單介紹其內容.解答:事件:用戶對界面操作在java語言上的描述,以類的形式出現,例如鍵盤操作對應的事件類是KeyEvent.事件源:事件發生的場所,通常就是各個組件,例如按鈕Button.事件處理者:接收事件對象并對其進行處理的對象.4、簡述JAVA的組件Component類和容器Container類.解答:Java的圖形用戶界面的最基本組成部分是組件〔Component,組件是一個以圖形化的方式顯示在屏幕上并能與用戶進行交互的對象,例如一個按鈕,一個標簽等.組件不能獨立地顯示出來,必須將組件放在一定的容器中才可以顯示出來.容器java.awt.Container也是一個類,實際上是Component的子類,因此容器本身也是一個組件,具有組件的所有性質,但是它的主要功能是容納其它組件和容器.一個容器可以容納多個組件,并使它們成為一個整體.容器可以簡化圖形化界面的設計,以整體結構來布置界
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河南省三門峽市澠池縣2024-2025學年數學三下期末調研模擬試題含解析
- 小學音樂老師教學培訓課件
- 家用紡織品的品牌戰略與營銷策略考核試卷
- 寶石礦區勘探中的地球化學技術考核試卷
- 礦山開采對氣候變化的響應考核試卷
- 電子樂器與人工智能結合考核試卷
- 礦山排土場邊坡穩定性分析及安全評價考核試卷
- 電聲器件在港口物流自動化中的應用考核試卷
- 硅冶煉過程中的能源審計與優化考核試卷
- 現代森林經營管理考核試卷
- 譯林版六年級英語下冊期中試卷及答案【真題】
- 2025屆山東省青島市高三下學期一模讀后續寫+替補隊員+講義
- 藥物臨床試驗科普
- 2024年內江市事業單位醫療崗招聘筆試真題
- 深靜脈血栓的評估和預防
- 杭州浙江杭州市上城區行政審批服務管理辦公室編外人員招聘筆試歷年參考題庫附帶答案詳解
- DB37-T 4612-2023 化妝品生產企業批生產記錄常用管理規范
- 中職高教版(2023)語文職業模塊-第五單元:走近大國工匠(一)展示國家工程-了解工匠貢獻【課件】
- 2025年湖南懷化市城市管理和綜合執法局局屬事業單位招聘歷年高頻重點提升(共500題)附帶答案詳解
- 2025年國家能源集團國神公司招聘筆試參考題庫含答案解析
- 廚師操作安全培訓
評論
0/150
提交評論