2023年java程序設計試題庫_第1頁
2023年java程序設計試題庫_第2頁
2023年java程序設計試題庫_第3頁
2023年java程序設計試題庫_第4頁
2023年java程序設計試題庫_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

《Java語言程序設計基礎教程》練習思考題參考答案第1章Java程序設計概述1.1單項選擇題1.編譯JavaApplication源文獻將產生相應的字節(jié)碼文獻,擴展名是什么 A..java B..class C..html D..exe解答:B2.Java語言具有許多優(yōu)點和特點,下列選項中,哪個反映了Java中“一次編譯,隨處運營”的特點。 A.簡樸性 B.平臺無關性 C.面向對象性 D.安全性解答:B3.Java語言具有許多優(yōu)點和特點,下列選項中,哪個反映了Java中并行機制的特點。 A.多線程 B.平臺無關性 C.面向對象性 D.安全性解答:A4.在Java語言中,下列哪些語句關于內存回收的說明是對的的? A.程序員必須創(chuàng)建一個線程來釋放內存; B.內存回收程序負責釋放無用內存; C.內存回收程序允許程序員直接釋放內存; D.內存回收程序可以在指定的時間釋放內存對象解答:B5.一個Java源文獻中最多只能有多少個public類。 A.1個 B.2個 C.3個 D.任意多個解答:A6.下面哪一個不是Java語言所具有的特點。 A.沒有全局變量,在類的定義外部沒有任何的變量定義; B.不直接支持指針操作,而使用更安全的引用類型; C.支持子類對父類的多繼承; D.具有自動垃圾收集功能;解答:C7.下面哪一個不是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應用程序入口的main方法,其聲明格式可以是() A.publicvoidmain(String[]args) B.publicstaticvoidmain(String[]args) C.publicstaticvoidMain(String*args) D.publicintmain(String[]args)解答:B10.下列說法對的的是(A)A、JAVA程序的main方法必須寫在類里面B、JAVA程序中可以有多個main方法C、JAVA程序中類名必須與文獻名同樣D、JAVA程序的main方法中假如只有一條語句,可以不用{}(大括號)括起來11.下列哪些語句關于Java內存回收的說明是對的的?(B)A、程序員必須創(chuàng)建一個線程來釋放內存B、內存回收程序負責釋放無用內存C、內存回收程序允許程序員直接釋放內存D、內存回收程序可以在指定的時間釋放內存對象1.2填空題1、開發(fā)與運營Java程序需要通過的三個重要環(huán)節(jié)為____________、____________和____________。解答:編輯源程序、編譯生成字節(jié)碼和解釋運營字節(jié)碼2、使用Java編譯器___javac____.exe編譯源文獻得到字節(jié)碼文獻。3、Java應用程序必須通過Java解釋器__JAVA__.exe來解釋執(zhí)行其字節(jié)碼文獻。4、假如Java源文獻中有一個類是public類,那么源文獻的名字必須與這個類的名字完全_相同______,擴展名是.java。5、Java應用程序總是從主類的____main___方法開始執(zhí)行.1.3簡答題13.簡述Java程序的開發(fā)過程?

(1)使用一個文字編輯器,編寫源文獻。(2)使用java編譯器,編譯源文獻得到字節(jié)碼文獻。

(3)解釋運營字節(jié)碼,分兩種java應用程序必須通過java解釋器來解釋執(zhí)行,java小應用程序必須使用解釋器和瀏覽器運營程序。1.什么是Java虛擬機?為什么Java被稱作是“平臺無關的編程語言”?解答:Java虛擬機是一個可以執(zhí)行Java字節(jié)碼的虛擬機進程。Java源文獻被編譯成能被Java虛擬機執(zhí)行的字節(jié)碼文獻。Java被設計成允許應用程序可以運營在任意的平臺,而不需要程序員為每一個平臺單獨重寫或者是重新編譯。Java虛擬機讓這個變?yōu)橐苍S,由于它知道底層硬件平臺的指令長度和其他特性。3.Java語言的關鍵特點有哪些?解答:簡樸性平臺無關性面向對象性安全性分布式多線程動態(tài)性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、執(zhí)行完以下代碼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(tǒng)+=z--/++x的值是()A.3 B.3.5C.4 D.5解答:A5、執(zhí)行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種基本數(shù)據(jù)類型()A.double; B.char;C.int; D.String;解答:D9、以下數(shù)據(jù)類型存儲空間最大的是()。(A)byte(B)long(C)float(D)char解答:B10、System.out.println("5"+2);的輸出結果應當是()。A52B7C2D5答案:A11.在類的定義中可以有兩個同名方法,每個方法的參數(shù)不同,這種現(xiàn)象稱為方法(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.關于以下程序段,對的的說法是(C)1.Strings1=”abc”+”def”;2.Strings2=newString(s1);3.if(s1==s2)4.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方法的返回類型是什么?(D)A、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.運算符優(yōu)先級別排序對的的是(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循環(huán)的描述對的的是(A)A、for循環(huán)體語句中,可以包含多條語句,但要用大括號括起來B、for循環(huán)只能用于循環(huán)次數(shù)已經擬定的情況C、在for循環(huán)中,不能使用break語句跳出循環(huán)D、for循環(huán)是先執(zhí)行循環(huán)體語句,后進行條件判斷23、score是一個整數(shù)數(shù)組,有五個元素,已經對的初始化并賦值,仔細閱讀下面代碼,程序運營結果是(B)temp=score[0];for(intindex=1;index<5;index++){if(score[index]<temp){temp=score[index];}}A.求最大數(shù)B.求最小數(shù)C.找到數(shù)組最后一個元素D.編譯犯錯26、2.2填空題1、Java語言是一種完全的_面向對象_程序設計語言2、Strings1=“China”;intn=s1.length();n的值為_5__3、在Java語言中,基本數(shù)據(jù)類型涉及:____整數(shù)類型、____浮點類型、____字符類型_和____布爾類型17、在Java的基本數(shù)據(jù)類型中,char型采用Unicode編碼方案,每個Unicode碼占用__2___字節(jié)內存空間,這樣,無論是中文字符還是英文字符,都是占用__2___字節(jié)內存空間。18、設x=2,則表達式(x++)/3的值是__0___。20、設有數(shù)組定義:intMyIntArray[]={10,20,30,40,50,60,70};則執(zhí)行以下幾個語句后的輸出結果是: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ù)組對象的長度在數(shù)組對象創(chuàng)建之后,就__不會____改變。數(shù)組元素的下標總是從___0___開始。22、對于數(shù)組int[][]t={{1,2,3},{4,5,6}}來說,t.length等于__2___,t[0].length等于__3____。2.3簡答題1、Java的基本數(shù)據(jù)類型有哪8種,每種類型的內存空間分別是多少。2.4綜合題26、編程計算10~20的整數(shù)的平方值,將結果保存在一個數(shù)組中。27、編寫一個程序使之從鍵盤讀入10個整數(shù)存入整型數(shù)組a中,并輸出這10個整數(shù)的最大值和最小值。importjava.util.Scanner;publicclasslianxi30{ publicstaticvoidmain(Stringargs[]){ Scannertemp; float[]sum=newfloat[11]; floatmax,min; for(inti=0;i<10;i++){ System.out.println("請輸入第一個數(shù)字(回車結束):"); 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%的速度保持穩(wěn)定增長,請編寫一個程序,計算每年達成多少,多少年可以實現(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+"年達成"+sum);}System.out.println("需要"+a+"年實現(xiàn)兩番");}}第3章類和對象3.1單項選擇題1、下列關于變量的敘述哪個是錯的?()A.實例變量是類的成員變量。B.在方法中定義的局部變量在該方法被執(zhí)行時創(chuàng)建。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類的一個無形式參數(shù)無返回值的方法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.package B.includeC.import D.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)一個包可以包含多個類(D)java中所有類都是Object類的子類16、在創(chuàng)建對象時必須(C)

A)

先聲明對象,然后才干使用對象

B)

先聲明對象,為對象分派內存空間,然后才干使用對象

C)

先聲明對象,為對象分派內存空間,對對象初始化,然后才干使用對象

D)

上述說法都對17、在調用方法時,若要使方法改變實參的值,可以(B)A)用基本數(shù)據(jù)類型作為參數(shù)B)用對象作為參數(shù)C)A和B都對D)A和B都不對18、關于以下程序代碼的說明對的的是(D)classHasStatic{ 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行不能通過編譯,由于引用了私有靜態(tài)變量B、10行不能通過編譯,由于x是私有靜態(tài)變量C、程序通過編譯,輸出結果為:x=103D、程序通過編譯,輸出結果為:x=10219、以下關于構造函數(shù)的描述錯誤的是(A)。A、構造函數(shù)的返回類型只能是void型。B、構造函數(shù)是類的一種特殊函數(shù),它的方法名必須與類名相同。C、構造函數(shù)的重要作用是完畢對類的對象的初始化工作。D、一般在創(chuàng)建新對象時,系統(tǒng)會自動調用構造函數(shù)。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、構造方法可以帶參數(shù)C、構造方法不可以重載D、構造方法絕對不能有返回值22、在Java語言中,下列關于類的繼承的描述,對的的是(B)。A、一個類可以繼承多個父類B、一個類可以具有多個子類C、子類可以使用父類的所有方法D、子類一定比父類有更多的成員方法23、分析選項中關于Java中this關鍵字的說法對的的是(A)A、this關鍵字是在對象內部指代自身的引用B、this關鍵字可以在類中的任何位置使用C、this關鍵字和類關聯(lián),而不是和特定的對象關聯(lián)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程序中,通過類的定義只能實現(xiàn)____單重繼承____,但通過接口的定義可以實現(xiàn)多____多重繼承____。2、_抽象(abstract)___方法是一種僅有方法頭,沒有具體方法體和操作實現(xiàn)的方法,該方法必須在抽象類之中定義。__final____方法是不能被當前類的子類重新定義的方法。3、面向對象程序設計的三個特性是_____封裝、____多態(tài)、____繼承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類中,假如類的定義者沒有顯式的定義任何構造方法,系統(tǒng)將自動提供一個___無參默認_構造方法。13、在子類中定義與父類的相同的方法,若在多個子類中定義相同的方法,則可以調用不同子類中的相同方法而實現(xiàn)不同的功能,這實現(xiàn)了程序運營時的______多態(tài)。3.3簡答題1.簡樸闡述方法的重載和方法的重寫之間的區(qū)別解答:重寫是子類的方法覆蓋父類的方法,規(guī)定方法名和參數(shù)都相同重載是在同一個類中的兩個或兩個以上的方法,擁有相同的方法名,但是參數(shù)卻不相同2、簡述實例變量和類變量的區(qū)別。解答:類變量也叫靜態(tài)變量,也就是在變量前加了static的變量;實例變量也叫對象變量,即沒加static的變量;區(qū)別在于:類變量是所有對象共有,其中一個對象將它值改變,其他對象得到的就是改變后的結果;而實例變量則屬對象私有,某一個對象將其值改變,不影響其他對象;2、簡述實例方法和類方法的區(qū)別解答:實例方法可以對當前對象的實例變量進行操作,也可以對類變量進行操作,實例方法由實例對象調用。但類方法不能訪問實例變量,只能訪問類變量。類方法可以由類名直接調用,也可由實例對象進行調用。類方法中不能使用this或super關鍵字。3、面向對象的三個基本特性是什么,分別簡樸介紹每個特性。解答:三大特性是:封裝,繼承,多態(tài)。封裝性就是把對象的屬性和服務結合成一個獨立的單位,并盡也許隱蔽對象的內部細節(jié)。特殊類的對象擁有其一般類的所有屬性與服務,稱作特殊類對一般類的繼承。對象的多態(tài)性是指在一般類中定義的屬性或服務被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個屬性或服務在一般類及其各個特殊類中具有不同的語義。4、簡樸闡述成員變量和局部變量的區(qū)別。解答:1)成員變量在整個類內都有效,局部變量只在定義它的方法內有效。2)成員變量又分為實例成員變量(簡稱實例變量)和類變量(也稱靜態(tài)變量),假如成員變量的類型前面加上關鍵字static,這樣的成員變量稱為類變量或靜態(tài)變量。3)假如局部變量的名字與成員變量的名字相同,則成員變量被隱藏,也就是說,這個成員變量在這個方法內暫時失效。這時假如想在該方法內使用成員變量,必須使用關鍵字this。5、簡述對象的引用和實體。解答:當用類創(chuàng)建一個對象時,類中的成員變量被分派內存空間,這些內存空間稱為該對象的實體,而對象中存放著引用,以保證實體由該對象操作使用。沒有實體的對象稱為空對象,空對象不能使用,即不能讓一個空對象去調用方法產生行為。6、簡述this關鍵字的意義,以及它在成員方法和構造方法中如何使用。解答:this是Java的一個關鍵字,表達某個對象。this可以出現(xiàn)在實例方法和構造方法中,但不可以出現(xiàn)在類方法中。this可以出現(xiàn)在實例方法和構造方法中,但不可以出現(xiàn)在類方法中。this關鍵字出現(xiàn)在類的構造方法中時,代表使用該構造方法所創(chuàng)建的對象。實例方法必須通過對象來調用,當this關鍵字出現(xiàn)在類的實例方法中時,代表正在調用該方法的當前對象。成員函數(shù)中定義了和成員變量中相同的變量時,引用成員變量要用this;構造函數(shù)中調用同一個類的其他構造函數(shù)時用this。7、簡樸描述Java的參數(shù)傳值中的兩種方式,基本數(shù)據(jù)類型參數(shù)的傳值和引用類型參數(shù)的傳值?解答:在基本數(shù)據(jù)類型參數(shù)的傳值中,基本數(shù)據(jù)類型的參數(shù)向該參數(shù)傳遞的值的級別不可以高于該參數(shù)的級別。在引用類型參數(shù)的傳值中,Java的引用類型數(shù)據(jù)涉及對象、數(shù)組和接口,當參數(shù)是引用類型時,“傳值”傳遞的是變量的引用而不是變量所引用的實體。假如改變參數(shù)變量所引用的實體,就會導致原變量的實體發(fā)生同樣的變化,但是假如改變參數(shù)的引用不會影響向其傳值的變量的引用。8、基本數(shù)據(jù)類型和對象作為參數(shù)傳遞的不同?解答:(1)基本數(shù)據(jù)類型作為參數(shù)在方法中傳遞的是值傳遞。(2)對象是引用傳遞,當對象作為參數(shù)傳遞時,傳遞的是對象的地址。3.4綜合題1、定義一個“點”(Point)類用來表達三維空間中的點,類體的成員變量x,y,z分別表達三維空間的坐標。類體中具有如下成員方法的定義:1)構造方法Point()可以生成具有特定坐標的點對象。2)setX(),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類,實現(xiàn)成員方法max(a,b)的重載。具體規(guī)定如下:a) 編寫voidmax(inta,intb)成員方法,對兩個整數(shù)進行大小的比較,輸出打印較大的那個整數(shù)。b) 編寫voidmax(floata,floatb)成員方法,對兩個float數(shù)進行大小的比較,輸出打印較大的那個float數(shù)。c) 編寫voidmax(doublea,doubleb)成員方法,對兩個double數(shù)進行大小的比較,輸出打印較大的那個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){ System.out.println(a>b?a:b); } publicstaticvoidmain(String[]args){ Testt=newTest(); t.max(3,4); }}3、編寫一個矩形類對數(shù)學中的矩形進行抽象描述,并具有方法可以計算矩形的周長和面積,具體分為以下三個子任務完畢。(1)創(chuàng)建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、覆蓋方法中的參數(shù)清單必須是被覆蓋方法參數(shù)清單的子集。解答:A4、關于類繼承的說法,對的的是()A、Java類允許多重繼承B、Java接口允許多繼承C、接口和類都允許多繼承D、接口和類都不允許多繼承解答:B5、 關于抽象類,對的的是______。A.抽象類中不可以有非抽象方法B.某個非抽象類的父類是抽象類,則這個子類必須重載父類的所有抽象方法C.可以用抽象類直接去創(chuàng)建對象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、關聯(lián)關系 D、無關系,上述類定義有語法錯誤解答:B11、以下程序代碼錯誤的是(B)。abstractclassP{}classAextendsP{}abstractclassBextendsP{}(A)Pp=newA();(B)Pp=newB();(C)Aa=newA();(D)Pp=newP(){voidfoo(){}};12、下面是People和Child類的定義和構造方法,每個構造方法都輸出編號。在執(zhí)行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而不產生編譯錯誤?(A)publicabstractclassMyClass{publicintconstInt=5;//addcodeherepublicvoidmethod(){}}Apublicabstractvoidmethod(inta);BconstInt=constInt+5;Cpublicintmethod();DpublicabstractvoidanotherMethod(){}15、以下哪項是接口的對的定義?(D)A、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();問以下哪個說法是對的的?(D)A、只有第1行能通過編譯B、第1、2行能通過編譯,但第3行編譯犯錯C、第1、2、3行能通過編譯,但第2、3行運營時犯錯D、第1行、第2行和第3行的聲明都是對的的17、假設A類有如下定義,設a是A類的一個實例,下列語句調用哪個是錯誤的?(C)classA{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中一個類只能實現(xiàn)一個接口C、在Java中一個類不能同時繼承一個類和實現(xiàn)一個接口D、在Java中接口只允許單一繼承19、以下關于抽象類和接口的說法錯誤的是(E)A、抽象類在Java語言中表達的是一種繼承關系,一個類只能使用一次繼承。但是一個類卻可以實現(xiàn)多個接口。B、在抽象類中可以沒有抽象方法C、實現(xiàn)抽象類和接口的類必須實現(xiàn)其中的所有方法,除非它也是抽象類。接口中的方法都不能被實現(xiàn)D、接口中定義的變量默認是publicstaticfinal型,且必須給其初值,所以實現(xiàn)類中不能重新定義,也不能改變其值。E、接口中的方法都必須加上public關鍵字。4.2填空題1、 在Java語言中所有的類都是直接或間接地繼承_Object_____類而得到的。2、在Java中一個父類可以有___多___個子類,一個類只能有__一____個直接父類。3、Java中不能被實例化、只能被子類繼承的是____抽象_____類4、當子類中的變量或方法與父類的變量和方法重名時,子類的變量被______隱藏,子類中的方法被______重載。此時,指向父類中的變量或方法,則用______super關鍵字實現(xiàn)。5、用來定義一個類指定繼承父類的關鍵字是______extends,用來指定接口的繼承的關鍵字是______implements7、在已有類的基礎上構造一個新的類,稱為類的______繼承。4.3簡答題1、請舉例簡要說明JAVA語言的繼承機制有何特點?解答:子類可以使用父類中的成員變量和方法,然后也可以添加自己的屬性和方法。假如子類沒有構造方法,則編譯器一方面為子類添加一個無參的構造方法,然后調用父類的默認構造方法,假如子類有構造方法,則先調用父類的默認構造方法,再調用子類的構造方法;假如父類中沒有默認構造方法,則犯錯。(太難)2、什么是繼承?什么是多重繼承和單繼承?Java采用何種機制來實現(xiàn)多重繼承?解答:繼承是面向對象編程的一種特性,是保存原有類功能的前提下拓展或改寫部分功能,實現(xiàn)代碼復用的方式。單繼承就是一個類只可以繼承自一個父類,多繼承是指一個類可以同時繼承多個父類。java中使用的是單繼承,也就是一個類有且只能有一個父類,java中可以使用接口實現(xiàn)來實現(xiàn)類似多繼承的效果。3、簡述super關鍵字的意義,以及如何使用。解答:關鍵字super表達父類對象。通過在子類中使用super做前綴可以引用被子類隱藏的父類變量或被子類重寫的父類方法。super用來引用當前對象的父類,雖然構造方法不可以繼承,但運用super關鍵字,子類構造方法中也可以調用父類的構造方法。1)操作被隱藏的變量和方法;2)使用super調用父類的構造方法。4、抽象類是什么,抽象方法是什么。解答:抽象類就是不能使用new方法進行實例化的類,即沒有具體實例對象的類。抽象類有點類似“模板”的作用,目的是根據(jù)其格式來創(chuàng)建和修改新的類。對象不能由抽象類直接創(chuàng)建,只可以通過抽象類派生出新的子類,再由其子類來創(chuàng)建對象。抽象方法就是以abstract修飾的方法,這種方法只聲明返回的數(shù)據(jù)類型、方法名稱和所需的參數(shù),沒有方法體,也就是說抽象方法只需要聲明而不需要實現(xiàn)。當一個方法為抽象方法時,意味著這個方法必須被子類的方法所重寫,否則其子類的方法仍然是abstract的。4、接口是什么,以及它的用處體現(xiàn)在哪幾個方面。解答:接口是抽象類的一種,只包含常量和方法的定義,而沒有變量和方法的實現(xiàn),且其方法都是抽象方法。它的用處體現(xiàn)在下面幾個方面:1)通過接口實現(xiàn)不相關類的相同行為,而無需考慮這些類之間的關系。2)通過接口指明多個類需要實現(xiàn)的方法。3)通過接口了解對象的交互界面,而無需了解對象所相應的類。5、什么是接口,什么是抽象類,接口和抽象類的區(qū)別?解答:抽象類就是不能使用new方法進行實例化的類,即沒有具體實例對象的類。抽象類有點類似“模板”的作用,目的是根據(jù)其格式來創(chuàng)建和修改新的類。對象不能由抽象類直接創(chuàng)建,只可以通過抽象類派生出新的子類,再由其子類來創(chuàng)建對象。接口是抽象類的一種特殊形式,只包含常量和方法的定義,而沒有變量和方法的實現(xiàn),且其方法都是抽象方法。抽象層次不同,抽象類是對類的抽象,而接口是對行為的抽象。跨域層次不同,抽象類的跨域是具有相似的類,接口可以跨域不同的類。設計層次不同,抽象類是自底向上抽象而來,子類抽象父類接口是自頂向下設計的,無需知道子類。6、接口的用處體現(xiàn)哪幾個方面?解答:通過接口實現(xiàn)不相關類的相同行為,而無需考慮這些類之間的關系。通過接口指明多個類需要實現(xiàn)的方法。通過接口了解對象的交互界面,而無需了解對象所相應的類。7、接口與實現(xiàn)類(具體類)關系:解答:多個無關的類可以實現(xiàn)同一個接口。一個類可以實現(xiàn)多個無關的接口。與繼承關系類似,接口與實現(xiàn)類之間存在多態(tài)性。14、子類與父類的繼承關系中,什么是屬性隱藏?什么是方法重寫?解答:隱藏是指當父類和子類有相同名字的屬性的時候,父類的同名變量形式上不可見了。但是實際還是存在的。重寫是針對方法的,通常是父類的方法在子類中重新寫過。當執(zhí)行子類的實例得時候,實際運營的是子類的方法。在子類里面可以通過super.method()來顯式的訪問。15、子類會繼承父類的所有方法和屬性么?解答:在同一個包中除private聲明外的方法都可以繼承。不在同一個包中,只繼承protected和public聲明的方法。(太難了)16、Java中的方法重寫(Overriding)和方法重載(Overloading)分別是什么?解答:Java中的方法重載發(fā)生在同一個類里面兩個或者是多個方法的方法名相同但是參數(shù)不同的情況。與此相對,方法重寫是說子類重新定義了父類的方法。子類中重寫的方法和父類中被重寫的方法必須有相同的方法名,參數(shù)列表和返回類型,只是方法體不同。4.4綜合題1、寫出一個類People,并由該類做基類派生出子類Employee和Teacher。其中People類具有name、age兩個保護成員變量,分別為String類型、整型,且具有公有的getAge成員函數(shù),用于返回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類。規(guī)定: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,該類實現(xiàn)接口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)成員方法。具體規(guī)定如下: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"創(chuàng)建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類,解決變長數(shù)組的Vector類等,所在的包是()。A、java.lang包 B、java.io包C、java.awt包 D、java.util包解答:D6、在Java中,所有類的根類是()。A、java.lang.ObjectB、java.lang.ClassC、java.applet.AppletD、java.awt.Frame解答:A7、以下用于創(chuàng)建容器對象的類是(A)A、FrameB、CheckboxC、ButtonD、TextField8、在JAVA中,以下(C)類的對象以鍵-值的方式存儲對象A、java.util.ListB、java.util.ArrayListC、java.util.HashtableD、java.util.LinkedList9、給定如下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.

運營時出現(xiàn)異常5.2填空題1、java的___自動垃圾收集機制大大減輕了程序員的承擔,不用再編寫專門的內存回收程序解決內存分派問題2、Math.random()可以產生一個在0和1之間的數(shù),請寫出產生一個在125與175之間的整數(shù)的語句Math.round(125+50*Math.random())5.3簡答題1、請舉例說明string類與StringBuffer類的區(qū)別?StringBuffer對象的內容可以修改;而String對象一旦產生后就不可以被修改,重新賦值其實是兩個對象。StringBuffer的內部實現(xiàn)方式和String不同,StringBuffer在進行字符串解決時,不生成新的對象,在內存使用上要優(yōu)于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中函數(shù)參數(shù)傳遞方式為Callbyvalue,link方法中會生產a的一個拷貝,同樣指向a所指的對象,綜合以上兩點,得出結果為Hello5.4綜合題1、請編寫程序,將下列字符串s="1,2;3,4,5;6,7,8"轉為二維實數(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]); //System.out.println(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中的特定區(qū)域中放置多個組件的容器?A、AppletB、PanelC、ButtonD、Rectangle解答:B3、下列容器類中哪一個是從java.awt.Window繼承的?()A、FrameB、PanelC、ContainerD、Applet解答:A4、下面哪個事件監(jiān)聽器可以解決在文本框中輸入回車鍵的事件______。A.ItemListener B.ActionListenerC.KeyListener D.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)(A)CardLayout(B)FlowLayout(C)BorderLayout(D)GridLayout6.2填空題1、Java中GUI工具包有__java.awt____和__java.Swing____。2、通過調用方法__setLayout____可以改變當前容器的布局方式。3、通過__add____方法向容器中添加組件。4、AWT布局管理器有______、______、______、______和______。5、圖形用戶界面的設計中有事件解決模型解決事件,在該模型中重要涉及事件源、事件對象和________事件監(jiān)聽器6、_______BorderLayout布局管理器涉及五個明顯的區(qū)域:東、南、西、北、中。6.3簡答題1、請舉例簡要說明JAVA語言使用事件監(jiān)聽器進行事件解決的過程。一方面事件監(jiān)聽器(包含真正解決事件的代碼)向事件源(與事件關聯(lián)的控件,如按鈕、滾動條)注冊,事件(敲擊鍵盤,或點擊鼠標)發(fā)生時,事件源向事件監(jiān)聽器發(fā)送一個事件對象(假如在該事件源上注冊了多個事件監(jiān)聽器,則向所有的監(jiān)聽器發(fā)送)1)對于某種類型的事件XXXEvent,要想接受并解決這類事件,必須定義相應的事件監(jiān)聽器類,該類需要實現(xiàn)與該事件相相應的接口XXXListener;2)事件源實例化以后,必須進行授權,注冊該類事件的監(jiān)聽器,使用addXXXListener(XXXListener)方法來注冊監(jiān)聽器。2、什么是布局管理器?解答:Java語言中,提供了布局管理器(LayoutManager)這個工具來管理組件在容器中的布局,如:排列順序,組件的大小、位置,當窗口移動或調整大小后組件如何變化等,而不使用直接設立組件位置和大小的方式。每個容器都有一個布局管理器,不同的布局管理器使用不同算法和策略,當容器需要對某個組件進行定位或判斷其大小尺寸時,就會調用其相應的布局

溫馨提示

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

評論

0/150

提交評論