版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
36/36《Java基礎(chǔ)入門》課后習(xí)題Java開發(fā)入門一、填空題1、Java的三大體系分別是_JavaSE_____、_JavaEE_____、_JavaME_____。2、Java程序的運行環(huán)境簡稱之為JRE_____。3、編譯Java程序需要使用_javac_____命令。4、javac.exe和java.exe兩個可執(zhí)行程序存放在JDK安裝目錄的bin______目錄下。5、path______環(huán)境變量用來存儲Java的編譯和運行工具所在的路徑,而_classpath_____環(huán)境變量則用來保存保存Java虛擬機要運行的“.class”文件路徑。二、選擇題 1、以下選項中,哪些屬于JDK工具?(多選)ABCDA、Java編譯器B、Java運行工具C、Java文檔生成工具D、Java打包工具2、Java屬于以下哪種語言?CA、機器語言B、匯編語言C、高級語言D、以上都不對3、下面哪種類型的文件可以在Java虛擬機中運行?DA、.javaB、.jreC、.exeD、.class4、安裝好JDK后,在其bin目錄下有許多exe可執(zhí)行文件,其中java.exe命令的作用是以下哪一種?
BA、Java文檔制作工具B、Java解釋器
C、Java編譯器
D、Java啟動器
5、如果jdk的安裝路徑為:d:\jdk,若想在命令窗口中任何當(dāng)前路徑下,都可以直接使用javac和java命令,需要將環(huán)境變量path設(shè)置為以下哪個選項?BA.d:\jdk;
B.d
:\jdk\bin;
C.d:\jre\bin;
D.d:\jre;三、問答題1、簡述Java的特點。面向?qū)ο?、跨平臺性、健壯性、安全性、可移植性、多線程性、動態(tài)性等。2、簡述JRE與JDK的區(qū)別。JRE(JavaRuntimeEnvironment,Java運行時環(huán)境),它相當(dāng)于操作系統(tǒng)部分,提供了Java程序運行時所需要的基本條件和許多Java基礎(chǔ)類,例如,IO類、GUI控件類、網(wǎng)絡(luò)類等。JRE是提供給普通用戶使用的,如果你只想運行別人開發(fā)好的Java程序,那么,你的計算機上必須且只需安裝JRE。JDK(JavaDevelopmentKit,Java開發(fā)工具包),它包含編譯工具、解釋工具、文檔制作工具、打包工具多種與開發(fā)相關(guān)的工具,是提供給Java開發(fā)人員使用的。初學(xué)者學(xué)習(xí)和使用Java語言時,首先必須下載和安裝JDK。JDK中已經(jīng)包含了JRE部分,初學(xué)者安裝JDK后不必再去下載和安裝JRE了。JDK(JavaDevelopmentKit,Java開發(fā)工具包),它包含編譯工具、解釋工具、文檔制作工具、打包工具多種與開發(fā)相關(guān)的工具,是提供給Java開發(fā)人員使用的。初學(xué)者學(xué)習(xí)和使用Java語言時,首先必須下載和安裝JDK。JDK中已經(jīng)包含了JRE部分,初學(xué)者安裝JDK后不必再去下載和安裝JRE了。四、編程題使用記事本編寫一個HelloWorld程序,在dos命令行窗口編譯運行。請按照題目的要求編寫程序并給出運行結(jié)果。publicclassHelloWorld{ publicstaticvoidmain(String[]args){ System.out.println("這是第一個Java程序!"); }}Java編程基礎(chǔ)一、填空題1、Java中的程序代碼都必須在一個類中定義,類使用__class____關(guān)鍵字來定義。2、布爾常量即布爾類型的兩個值,分別是_true_____和_flase_____。3、Java中的注釋可分為三種類型,分別是_單行注釋//__、__多行注釋_/**/__、文檔/注釋***/______。4、Java中的變量可分為兩種數(shù)據(jù)類型,分別是_基本數(shù)據(jù)類型_____和_引用數(shù)據(jù)類型_____。5、在Java中,byte類型數(shù)據(jù)占____1__個字節(jié),short類型數(shù)據(jù)占__2____個字節(jié),int類型數(shù)據(jù)占___4___個字節(jié),long類型數(shù)據(jù)占____8__個字節(jié)。6、在邏輯運算符中,運算符___&___和___&&___用于表示邏輯與,__|____和__||____表示邏輯或。7、若x=2,則表達(dá)式(x++)/3的值是__0___。8、若inta=2;a+=3;執(zhí)行后,變量a的值為__5____。9、若int[]a={12,45,34,46,23};,則a[2]=__34____。10、若inta[3][2]={{123,345},{34,56},{34,56}},則a[2][1]=__56____。二、判斷題1、Java語言不區(qū)分大小寫。錯2、0xC5表示的是一個十六進制整數(shù)。對3、continue語句只用于循環(huán)語句中,它的作用是跳出循環(huán)。錯4、“/*…*/”中可以嵌套“//”注釋,但不能嵌套“/*…*/”注釋。對5、-5%3的運算結(jié)果是2。錯三、選擇題1、以下選項中,哪些屬于合法的標(biāo)識符?(多選)ADA、Hello_WorldB、classC、123usernameD、username1232、關(guān)于方法重載的描述,以下選項中哪些是正確的?(多選)(AD)ABD A、方法名必須一致 B、返回值類型必須不同 C、參數(shù)個數(shù)必須一致 D、參數(shù)的個數(shù)或類型不一致3、以下關(guān)于變量的說法錯誤的是?CA、變量名必須是一個有效的標(biāo)識符B、變量在定義時可以沒有初始值C、變量一旦被定義,在程序中的任何位置都可以被訪問D、在程序中,可以將一個byte類型的值賦給一個int類型的變量,不需要特殊聲明4、以下選項中,switch語句判斷條件可以接收的數(shù)據(jù)類型有哪些?(多選)ABCDA、intB、byteC、charD、short5、假設(shè)intx=2,三元表達(dá)式x>0?x+1:5的運行結(jié)果是以下哪一個?C A、0B、2C、3D、56、下面的運算符中,用于執(zhí)行除法運算是哪個?AA、/B、\C、%D、*7、下列語句哪些屬于循環(huán)語句?(多選)ACA、for語句B、if語句C、while語句D、switch語句8、下面哪種寫法可以實現(xiàn)訪問數(shù)組arr的第1個元素?A A、arr[0]B、arr(0)C、arr[1]D、arr(1)9、以下哪個選項可以正確創(chuàng)建一個長度為3的二維數(shù)組?(B)CA、newint[2][3];B、newint[3][];C、newint[][3];D、以上答案皆不對10、請先閱讀下面的代碼。intx=1;inty=2;if(x%2==0){ y++;}else{ y--;}System.out.println("y="+y); 上面一段程序運行結(jié)束時,變量y的值為下列哪一項?AA、1B、2C、3D、switch語句四、程序分析題閱讀下面的程序,分析代碼是否能夠編譯通過,如果能編譯通過,請列出運行的結(jié)果。否則請說明編譯失敗的原因。代碼一:b=7(編譯不通過。int值4和b相加時,由于變量b的類型為byte,取值圍沒有int類型大,存不下int類型的值,因此編譯不通過)publicclassTest01{ publicstaticvoidmain(String[]args){ byteb=3; b=b+4; System.out.println("b="+b); }}代碼二:不能,y只在{}有效(編譯不通過。這是因為y是在最里層的代碼塊中定義的一個變量,只有在那個代碼)publicclassTest02{ publicstaticvoidmain(String[]args){ intx=12; { inty=96; System.out.println("xis"+x); System.out.println("yis"+y); } y=x; System.out.println("xis"+x); }}代碼三:3因為沒有break,,所以4以后都執(zhí)行publicclassTest03{ publicstaticvoidmain(Stringargs[]){ intx=4,j=0; switch(x){ case1: j++; case2: j++; case3: j++; case4: j++; case5: j++; default: j++; } System.out.println(j); }}代碼四:987publicclassTest04{ publicstaticvoidmain(Stringargs[]){ intn=9; while(n>6){ System.out.println(n); n--; } }}五、簡答題1、請列舉Java語言中的八種基本數(shù)據(jù)類型,并說明每種數(shù)據(jù)類型所占用的空間大小。Java語言的八種基本數(shù)據(jù)類型有:byte字節(jié)型,占一個字節(jié)。short短整型,占兩個字節(jié)。int整型,占4個字節(jié)。long長整型,占8個字節(jié)。float單精度浮點型,占4個字節(jié)。double雙精度浮點型,占8個字節(jié)。char字符型,占兩個字節(jié)。boolean型,表示邏輯值,有true和false兩個值,分別占一個字節(jié)。簡述&&與&的區(qū)別并舉例說明。如果使用“&”在表達(dá)式之間進行連接,那么無論任何情況,“&”兩邊的表達(dá)式都會參與計算。如果使用“&&”進行連接,當(dāng)“&&”左邊的表達(dá)式為false,則不會執(zhí)行其右邊的表達(dá)式。例如定義intx=2,y=0;booleanb=x<y&x/2>0表達(dá)是會發(fā)生被0除異常,因為x/y的表達(dá)式執(zhí)行了。而booleanb=x<y&x/2>0是不會出現(xiàn)這種異常的,因為x<y為false,表達(dá)式x/y不會執(zhí)行什么是方法重載?方法重載指的是在一個類中可以聲明多個同名的方法,而方法中參數(shù)的個數(shù)或者數(shù)據(jù)類型不一致。調(diào)用這些同名的方法時,JVM會根據(jù)實際參數(shù)的不同綁定到不同的方法。六、編程題請按照題目的要求編寫程序并給出運行結(jié)果。1、請編寫程序,實現(xiàn)計算“1+3+5+7+…+99”的值。 提示:使用循環(huán)語句實現(xiàn)自然數(shù)1~99的遍歷。在遍歷過程中,通過條件判斷當(dāng)前遍歷的數(shù)是否為奇數(shù),如果是就累加,否則不加。2、已知函數(shù)x+3(x>0)y=0(x=0)x2–1(x<0)請設(shè)計一個方法實現(xiàn)上面的函數(shù),根據(jù)傳入的值x的不同,返回對應(yīng)的y值。提示:定義一個static修飾符修飾的方法,方法接收一個int類型的參數(shù)x,返回值為int類型。在方法中使用if…elseif..else語句針對x的值進行三種情況的判斷。根據(jù)判斷結(jié)果分別執(zhí)行不同的表達(dá)式,并將結(jié)果賦予變量y。在方法的最后返回y的值。在main方法中調(diào)用設(shè)計好的方法,傳入一個int型的值,將方法的返回值打印。3、請編寫程序,實現(xiàn)對數(shù)組{25,24,12,76,101,96,28}的排序。 提示:使用冒泡排序算法。面向?qū)ο螅ㄉ希┮?、填空題1、面向?qū)ο蟮娜筇卣魇欠庋b性_、_繼承性_____和__多態(tài)性____。2、在Java中,可以使用關(guān)鍵字__new____來創(chuàng)建類的實例對象。3、定義在類中的變量被稱為__成員變量____,定義在方法中的變量被稱為局部變量______4、面向?qū)ο蟪绦蛟O(shè)計的重點是_類___的設(shè)計,__類____是用來創(chuàng)建對象的模板。5、在非靜態(tài)成員方法中,可以使用關(guān)鍵字_this__訪問類的其它非靜態(tài)成員。6、當(dāng)一個對象被當(dāng)成垃圾從存中釋放時,它的__finalize()____方法會被自動調(diào)用。7、被static關(guān)鍵字修飾的成員變量被稱為_靜態(tài)變量_,它可以被該類所有的實例對象共享。8、在一個類中,除了可以定義屬性、方法,還可以定義類,這樣的類被稱為_部類_____。9、在Java中,提供了一個_javadoc_____命令,用于將程序中的文檔注釋提取出來,生成HTML格式的幫助文檔。10、所謂類的封裝是指在定義一個類時,將類中的屬性私有化,即使用_private_____關(guān)鍵字來修飾。二、判斷題1、在定義一個類的時候,如果類的成員被private所修飾,該成員不能在類的外部被直接訪問。對2、Java中的每個類都至少有一個構(gòu)造方法,一個類中如果沒有定義構(gòu)造方法,系統(tǒng)會自動為這個類創(chuàng)建一個默認(rèn)的構(gòu)造方法。對3、聲明構(gòu)造方法時,不能使用private關(guān)鍵字修飾。錯4、類中static修飾的變量或方法,可以使用類名或?qū)ο蟮囊米兞吭L問。對5、方法部類中不能訪問外部類的成員變量。錯三、選擇題1、類的定義必須包含在以下哪種符號之間?BA、方括號[]B、花括號{}C、雙引號“”D、圓括號()2、下面哪一個是正確的類的聲明?D
A、publicvoidHH{…} B、publicclassMove(){…}
C、publicclassvoidnumber{} D、publicclassCar{…}3、在以下什么情況下,構(gòu)造方法會被調(diào)用?BA、類定義時B、創(chuàng)建對象時C、調(diào)用對象方法時D、使用對象的變量時4、下面對于構(gòu)造方法的描述,正確有哪些?(多選)ABCA、方法名必須和類名一樣B、方法名的前面沒有返回值類型的聲明C、在方法中不能使用return語句返回一個值D、當(dāng)定義了帶參數(shù)的構(gòu)造方法,系統(tǒng)默認(rèn)的不帶參數(shù)的構(gòu)造方法依然存在5、使用this調(diào)用類的構(gòu)造方法,下面的說確的是?(多選)ACD(ABCD)A、使用this調(diào)用構(gòu)造方法的格式為this([參數(shù)1,參數(shù)2…])B、只能在構(gòu)造方法中使用this調(diào)用其它的構(gòu)造方法C、使用this調(diào)用其它構(gòu)造方法的語句必須放在第一行D、不能在一個類的兩個構(gòu)造方法中使用this互相調(diào)用6、下面哪些可以使用static關(guān)鍵字修飾?(多選)AC(ACD)A、成員變量B、局部變量C、成員方法D、成員部類7、關(guān)于部類,下面說確的是?(多選)ACD(ABCD)A、成員部類是外部類的一個成員,可以訪問外部類的其它成員B、外部類可以訪問成員部類的成員C、方法部類只能在其定義的當(dāng)前方法中進行實例化D、靜態(tài)部類中可以定義靜態(tài)成員,也可以定義非靜態(tài)成員8、下面對于單例設(shè)計模式的描述,正確的是?(多選)BCD(ABCD)A、類中定義一個無參的構(gòu)造方法,并且聲明為私有B、在部創(chuàng)建一個該類的實例對象,使用靜態(tài)變量引用該實例對象C、使用private修飾靜態(tài)變量,禁止外界直接訪問D、定義靜態(tài)方法返回該類實例請先閱讀下面的代碼DpublicclassTest{publicTest(){ System.out.println("構(gòu)造方法一被調(diào)用了");}publicTest(intx){ this(); System.out.println("構(gòu)造方法二被調(diào)用了");}publicTest(booleanb){ this(1); System.out.println("構(gòu)造方法三被調(diào)用了");}publicstaticvoidmain(String[]args){Testtest=newTest(true); }}上面程序的運行結(jié)果為下列哪一項?A、構(gòu)造方法一被調(diào)用了 B、構(gòu)造方法二被調(diào)用了C、構(gòu)造方法三被調(diào)用了 D、以上三個選項之和10、Outer類中定義了一個成員部類Inner,需要在main()方法中創(chuàng)建Inner類實例對象,以下四種方式哪一種是正確的?DA、Innerin=newInner() B、Innerin=newOuter.Inner();C、Outer.Innerin=newOuter.Inner();D、Outer.Innerin=newOuter().newInner();四、程序分析題閱讀下面的程序,分析代碼是否能夠編譯通過,如果能編譯通過,請列出運行的結(jié)果。否則請說明編譯失敗的原因。代碼一:不能,secret是私有成員,只能類部訪問(程序不能編譯通過,因為在類A中的成員變量secret用private修飾,所以在類Test1中無法訪問)classA{ privateintsecret=5;}publicclassTest1{ publicstaticvoidmain(String[]args){ Aa=newA(); System.out.println(a.secret++); }}代碼二:250(程序不能編譯通過,因為在靜態(tài)方法method()中不能訪問非靜態(tài)成員變量x。)publicclassTest2{ intx=50; staticinty=200; publicstaticvoidmethod(){ System.out.println(x+y); } publicstaticvoidmain(String[]args){Test2.method(); }}代碼三:Inner為私有部類,不允許外部訪問(inner)Innerinner=newOuter().newInner();可以用外部類訪問部類publicclassOuter{ publicStringname="Outer"; privateclassInner{ Stringname="inner"; voidshowName(){ System.out.println(name); } } publicstaticvoidmain(String[]args){ Innerinner=newOuter().newInner(); System.out.println(); }}五、簡答題1、構(gòu)造方法和普通的成員方法有什么區(qū)別?構(gòu)造方法是類的一個特殊成員,它會在類實例化對象時被自動調(diào)用。而普通方法只有在使用的時候才會被調(diào)用。在定義構(gòu)造方法時要求方法名與類名一樣、在方法名的前面沒有返回值類型的聲明、在方法中不能使用return語句返回一個值單例設(shè)計模式具備哪些特點?單例模式可以保證在整個程序運行期間針對該類只存在一個實例對象。六、編程題1、請按照以下要求設(shè)計一個學(xué)生類Student,并進行測試。要求如下:1)Student類中包含、成績兩個屬性2)分別給這兩個屬性定義兩個方法,一個方法用于設(shè)置值,另一個方法用于獲取值.3)Student類中定義一個無參的構(gòu)造方法和一個接收兩個參數(shù)的構(gòu)造方法,兩個參數(shù)分別為和成績屬性賦值4)在測試類中創(chuàng)建兩個Student對象,一個使用無參的構(gòu)造方法,然后調(diào)用方法給和成績賦值,一個使用有參的構(gòu)造方法,在構(gòu)造方法中給和成績賦值2、定義一個Father和Child類,并進行測試。要求如下:1)Father類為外部類,類中定義一個私有的String類型的屬性name,name的值為“zhangjun”。2)Child類為Father類的部類,其中定義一個introFather()方法,方法中調(diào)用Father類的name屬性。3)定義一個測試類Test,在Test類的main()方法中,創(chuàng)建Child對象,并調(diào)用introFather()方法。面向?qū)ο螅ㄏ拢┮?、填空題1、在Java語言中,允許使用已存在的類作為基礎(chǔ)創(chuàng)建新的類,這種技術(shù)我們稱為繼承______。2、一個類如果實現(xiàn)一個接口,那么它就需要實現(xiàn)接口中定義的全部_方法_____,否則該類就必須定義成_抽象類_____。3、在程序開發(fā)中,要想將一個包中的類導(dǎo)入到當(dāng)前程序中,可以使用_import_____關(guān)鍵字。4、一個類可以從其它的類派生出來,派生出來的類稱為_子類_____,用于派生的類稱為_基類_____或者_(dá)_父類____。5、JDK中定義了大量的異常類,這些類都是_Exception_____類的子類或者間接子類。6、定義一個Java類時,如果前面加使用_final_____關(guān)鍵字修飾,那么該類不可以被繼承。7、如果子類想使用父類中的成員,可以通過關(guān)鍵字__super____引用父類的成員。8、在Java語言中,所有的類都直接或間接繼承自_Object_____類。9、異常的捕獲通常由try、catch兩部分組成,_try_____代碼塊用來存放可能發(fā)生異常,_catch_____代碼塊用來處理產(chǎn)生的異常。10、在Java語言中,要想是將一個已編譯的類打包成jar文件,可以使用的命令是_jar-cvf_____,要想在命令行窗口運行jar文件,可以使用的命令是__java-jar___。二、判斷題1、抽象方法必須定義在抽象類中,所以抽象類中的方法都是抽象方法。錯2、Java中被final關(guān)鍵字修飾的變量,不能被重新賦值。對3、不存在繼承關(guān)系的情況下,也可以實現(xiàn)方法重寫。錯4、package聲明語句應(yīng)當(dāng)為Java源文件中的第一條語句。對5、接口中只能定義常量和抽象方法。錯(對)三、選擇題1、在類的繼承關(guān)系中,需要遵循以下哪個繼承原則?BA、多重B、單一C、雙重D、不能繼承2、在Java語言中,以下哪個關(guān)鍵字用于在方法上聲明拋出異常?CA.tryB.catchC.throwsD.throw3、關(guān)于super關(guān)鍵字以下說法哪些是正確的?(多選)ABD(ABC)A、super關(guān)鍵字可以調(diào)用父類的構(gòu)造方法B、super關(guān)鍵字可以調(diào)用父類的普通方法C、super與this不能同時存在于同一個構(gòu)造方法中D、super與this可以同時存在于同一個構(gòu)造方法中4、以下說法哪些是正確的?(多選)ABCDA、Java語言中允許一個類實現(xiàn)多個接口 B、Java語言中不允許一個類繼承多個類C、Java語言中允許一個類同時繼承一個類并實現(xiàn)一個接口D、Java語言中允許一個接口繼承一個接口5、類中的一個成員方法被下面哪個修飾符修飾,該方法只能在本類被訪問?CA、publicB、protectedC、privateD、default6、關(guān)于抽象類的說法哪些是正確的?(多選)ACA、抽象類中可以有非抽象方法。B、如果父類是抽象類,則子類必須重寫父類所有的抽象方法。C、不能用抽象類去創(chuàng)建對象。D、接口和抽象類是同一個概念。7、在Java中,要想讓一個類繼承另一個類,可以使用以下哪個關(guān)鍵字?CA、inheritsB、implementsC、extendsD、modifies8、System類位于以下哪個包中?DA、java.ioB、java.utilC、java.awtD、java.lang9、已知類的繼承關(guān)系如下:AclassEmployee;classManagerextendsEmployee;classDirectorextendsEmployee;則以下語句能通過編譯的有哪些?A、Employeee=newManager();B、Directord=newManager();C、Directord=newEmployee();D、Managerm=newDirector();10、編譯運行下面的程序,結(jié)果是什么?BpublicclassA{ publicstaticvoidmain(String[]args){ Bb=newB(); b.test(); } voidtest(){ System.out.print("A"); }}classBextendsA{ voidtest(){ super.test(); System.out.print("B"); }}A、產(chǎn)生編譯錯誤B、代碼可以編譯運行,并輸出結(jié)果ABC、代碼可以編譯運行,但沒有輸出D、編譯沒有錯誤,但會產(chǎn)生運行時異常四、分析題閱讀下面的程序,分析代碼是否能編譯通過,如果能編譯通過,請列出運行的結(jié)果。如果不能編譯通過,請說明原因。代碼一:進入catch代碼塊進入finally代碼塊(程序編譯能通過,這是因為intx=2/0;System.out.println(x);這兩條語句使用了try塊,捕獲了程序因為除以0而產(chǎn)生的異常情況,之后程序會繼續(xù)向下執(zhí)行,輸出“進入catch代碼塊”,“進入finally代碼塊”。)publicclassTest01{ publicstaticvoidmain(String[]args){ try{ intx=2/0; System.out.println(x); }catch(Exceptione){ System.out.println("進入catch代碼塊"); }finally{ System.out.println("進入finally代碼塊"); } }}代碼二:不能,final修飾shout,不能被重寫(程序編譯不通過,這是因為在程序中使用了final關(guān)鍵字修飾Animal類,使得Animal類不能被繼承。shout()方法中同樣使用了final關(guān)鍵字,使得該方法不能被重寫。)finalclassAnimal{ publicfinalvoidshout(){ //程序代碼 }}classDogextendsAnimal{ publicvoidshout(){ //程序代碼 }}classTest02{ publicstaticvoidmain(String[]args){ Dogdog=newDog(); }} 代碼三:動物叫!汪汪……classAnimal{ voidshout(){ System.out.println("動物叫!"); }}classDogextendsAnimal{ voidshout(){ super.shout(); System.out.println("汪汪……"); }}publicclassTest03{ publicstaticvoidmain(String[]args){Animalanimal=newDog();animal.shout(); }} 代碼四:不能,Dog沒有實現(xiàn)Animal所有方法,Dog為抽象類不能創(chuàng)建對象(程序編譯不通過,因為接口中定義的方法不能有方法體,所以定義的eat()方法是錯誤的。接口中的方法必須在子類中全部實現(xiàn),由于run()方法在子類中并沒有重新實現(xiàn),所以這也是錯誤的。)interfaceAnimal{ voidbreathe(); voidrun(); voideat(){};}classDogimplementsAnimal{ publicvoidbreathe(){System.out.println("I’mbreathing")} publicvoideat(){System.out.println("I’meathing")}}publicclasstest04{publicstaticvoidmain(String[]args){Dogdog=newDog();dog.breathe();dog.eat();}}五、簡答題 1、什么是方法重寫?在繼承關(guān)系中,子類的方法與父類的某一方法具有一樣的方法名、返回類型和參數(shù)列表,則稱子類的該方法重寫(覆蓋)父類的方法。2、什么是多態(tài)?多態(tài)意味著一個對象有著多種形態(tài),可以在特定的情況下,表現(xiàn)不同的狀態(tài),從而對應(yīng)著不同的屬性和方法。簡單的說,多態(tài)就是使用父類類型的變量引用子類對象,根據(jù)被引用子類對象的特性,程序會得到不同的運行效果。 3、抽象類和接口的區(qū)別?在Java中,使用abstract關(guān)鍵字修飾的類稱之為抽象類。抽象類是不能被實例化的,通常需要寫一個子類來繼承抽象類,同時實例化子類來獲得該類的對象。抽象類通常用于表示一種抽象的概念。接口可以說是一種特殊的抽象類,接口中只能定義常量和抽象方法。由于接口的特殊性,在定義時需要使用interface關(guān)鍵字。六、編程題請按照題目的要求編寫程序并給出運行結(jié)果。設(shè)計一個學(xué)生類Student和它的一個子類Undergraduate,要求如下:Student類有name()、和age(年齡)屬性,一個包含兩個參數(shù)的構(gòu)造方法,用于給name和age屬性賦值,一個show()方法打印Student的屬性信息本科生類Undergraduate增加一個degree(學(xué)位)屬性。有一個包含三個參數(shù)的構(gòu)造方法,前兩個參數(shù)用于給繼承的name和age屬性賦值,第三個參數(shù)給degree專業(yè)賦值,一個show()方法用于打印Undergraduate的屬性信息在測試類中分別創(chuàng)建Student對象和Undergraduate對象,調(diào)用它們的show()。2、設(shè)計一個Shape接口和它的兩個實現(xiàn)類Square和Circle,要求如下:1)Shape接口中有一個抽象方法area(),方法接收有一個double類型的參數(shù),返回一個double類型的結(jié)果2)Square和Circle中實現(xiàn)了Shape接口的area()抽象方法,分別求正方形和圓形的面積并返回在測試類中創(chuàng)建Square和Circle對象,計算邊長為2的正方形面積和半徑為3的圓形面積3、自定義一個異常類NoThisSoundException和Player類,在Player的play()方法中使用自定義異常,要求入下:NoThisSongException繼承Exception類,類中有一個無參和一個接收一個String類型參數(shù)的構(gòu)造方法,構(gòu)造方法中都使用super關(guān)鍵字調(diào)用父類的構(gòu)造方法。Player類中定義一個play(intindex)方法,方法接收一個int類型的參數(shù),表示播放歌曲的索引,當(dāng)index>10時,paly()方法用throw關(guān)鍵字拋出NoThisSongException異常,創(chuàng)建異常對象時,調(diào)用有參的構(gòu)造方法,傳入“您播放的歌曲不存在”。在測試類中創(chuàng)建Player對象,并調(diào)用play()方法測試自定義的NoThisSongException異常,使用try…catch語句捕獲異常,調(diào)用NoThisSongException的getMessage()方法打印出異常信息。多線程一、填空題1、一個應(yīng)用程序中有多條并發(fā)執(zhí)行的線索,每條線索都被稱作一個線程______,它們會交替執(zhí)行,彼此間可以進行_通信_____。2、在實現(xiàn)多線程的程序時有兩種方式,一是通過繼_Thread_____承類,二是通過實現(xiàn)Runnable______接口。3、yield()方法只能讓一樣優(yōu)先級或者更高優(yōu)先級、處于_就緒_____狀態(tài)的線程獲得運行的機會。4、在Java語言中,同步方法需要用到關(guān)鍵字_synchronized_,對于同步方法而言無需指定同步鎖,它的同步鎖是方法所在的_對象_____,也就是_this_____(關(guān)鍵字)。5、在多任務(wù)系統(tǒng)中,每個獨立執(zhí)行的程序稱之為_線程_____,也就是“正在運行的程序”。6、線程的整個生命周期分為五個階段,分別是_新建_____、就緒______、_運行_____、_阻塞_____、和死亡_____。7、線程的優(yōu)先級用1~10之間的整數(shù)來表示,其中__10___代表優(yōu)先級最高,__1___代表優(yōu)先級最低。8、在Thread類中,提供了一個start()方法,該方法用于啟動線程______,當(dāng)新線程啟動后,系統(tǒng)會自動調(diào)用__run()____方法。9、要想解決線程間的通信問題,可以使用__wait()____、notify()______、_notifyALL()_____方法。10、要將某個線程設(shè)置為后臺線程,需要調(diào)用該線程的_setDaemon(true)_____方法,該方法必須在_start()_____方法之前調(diào)用。二、判斷題1、當(dāng)我們創(chuàng)建一個線程對象時,該對象表示的線程就立即開始運行。錯2、如果前臺線程全部死亡,后臺線程也會自動死亡。對3、同步代碼塊中的鎖對象可以是任意類型的對象。對4、靜態(tài)方法不能使用synchronized關(guān)鍵字來修飾。錯5、線程結(jié)束等待或者阻塞狀態(tài)后,會進入運行狀態(tài)。錯三、選擇題1、Thread類位于下列哪個包中?BA、java.ioB、java.langC、java.utilD、java.awt2、關(guān)于線程的創(chuàng)建過程,下面四種說確的有哪些?(多選)ACA、定義Thread類的子類,重寫Thread類的run()方法,創(chuàng)建該子類的實例對象,調(diào)用對象的start()方法B、定義Thread類的子類,重寫Thread類的run()方法,創(chuàng)建該子類的實例對象,調(diào)用對象的run()方法C、定義一個實現(xiàn)Runnable接口的類并實現(xiàn)run()方法,創(chuàng)建該類實例對象,將其作為參數(shù)傳遞給Thread類的構(gòu)造方法來創(chuàng)建Thread對象,調(diào)用Thread對象的start()方法D、定義一個實現(xiàn)Runnable接口的類并實現(xiàn)run()方法,創(chuàng)建該類對象,然后調(diào)用run()方法3、對于通過實現(xiàn)Runnable接口創(chuàng)建線程,下面說確的有哪些?(多選)ABCA、適合多個一樣程序代碼的線程去處理同一個資源的情況B、把線程同程序代碼、數(shù)據(jù)有效的分離,很好的體現(xiàn)了面向?qū)ο蟮脑O(shè)計思想C、可以避免由于Java的單繼承帶來的局限性D、編寫簡單,可以不通過Thread類直接創(chuàng)建線程4、對于線程的生命周期,下面四種說確的有哪些?(多選)ABC(BC)
A、調(diào)用了線程的start()方法,該線程就進入運行狀態(tài)(就緒,還要獲得CPU使用權(quán))B、線程的run()方法運行結(jié)束或被未catch的InterruptedException等異常終結(jié),那么該線程進入死亡狀態(tài)C、線程進入死亡狀態(tài),但是該線程對象仍然是一個Thread對象,在沒有被垃圾回收器回收之前仍可以像引用其它對象一樣引用它D、線程進入死亡狀態(tài)后,調(diào)用它的start()方法仍然可以重新啟動5、對于死鎖的描述,下面四種說確有哪些?(多選)AB(ABD)A、當(dāng)兩個線程互相等待對方釋放同步鎖時會發(fā)生死鎖B、Java虛擬機沒有檢測和處理死鎖的措施C、一旦出現(xiàn)死鎖,程序會發(fā)生異常D、處于死鎖狀態(tài)的線程處于阻塞狀態(tài),無法繼續(xù)運行6、下面四個選項中,哪些是線程進入阻塞狀態(tài)的原因?(多選)ABCA、線程試圖獲取某個對象的同步鎖,而該鎖被其它線程持有B、線程調(diào)用了另一個線程的join()方法C、當(dāng)線程調(diào)用了一個阻塞式的IO方法D、線程調(diào)用了setDaemon(booleanb)方法7、線程調(diào)用sleep()方法后,該線程將進入以下哪種狀態(tài)?CA、就緒狀態(tài) B、運行狀態(tài)C、阻塞狀態(tài) D、死亡狀態(tài)8、在以下哪種情況下,線程進入就緒狀態(tài)?DA、線程調(diào)用了sleep()方法時 B、線程調(diào)用了join()方法(終止)C、線程調(diào)用了yield()方法時 D、線程調(diào)用了notify()方法??9、下面四個選項中,對線程同步的目的描述正確的有哪些?(多選)AD(AB)A、鎖定資源,使同一時刻只有一個線程去訪問它,防止多個線程操作同一個資源引發(fā)錯誤B、提高線程的執(zhí)行效率C、讓線程獨占一個資源D、讓多個線程同時使用一個資源10、對于wait()方法,下面說確的是?(多選)ABCDA、wait()方法的調(diào)用者是同步鎖對象B、wait()方法使線程進入等待狀態(tài)C、調(diào)用同一鎖對象的notify()或notifyAll()方法可以喚醒調(diào)用wait()方法等待的線程D、調(diào)用wait()方法的線程會釋放同步鎖對象四、程序分析題閱讀下面的程序,分析代碼是否能編譯通過,如果能編譯通過,請列出運行的結(jié)果。如果不能編譯通過,請說明原因。1.代碼一:不能,RunHandler沒有繼承Thread,不能用Thread創(chuàng)建對象(程序不能編譯通過,因為RunHandler類沒有實現(xiàn)Runnable接口,因此RunHandler的實例對象不能作為參數(shù)傳遞給Thread的構(gòu)造方法。)classRunHandler{publicvoidrun(){System.out.println("run");}}publicclassTest{publicstaticvoidmain(String[]args){Threadt=newThread(newRunHandler());t.start();}}2.代碼二:this
is
run(程序不能編譯通過,因為Thread的子類A重寫的run()方法的訪問級別不能低于父類run()方法的。訪問級別)publicclassAextendsThread{protectedvoidrun(){ System.out.println("this
is
run()"); }publicstaticvoidmain(String[]args){Aa=newA();a.start(); }}3.代碼三:Exception(程序不能編譯通過,因為同步方法中調(diào)用wait()方法的對象必須為同步鎖對象)publicclassTest{ privateObjectobj=newObject(); publicsynchronizedvoida(){ try{obj.wait();改this.wait() System.out.println("waiting"); }catch(InterruptedExceptione){ System.out.println("Exception"); } } publicstaticvoidmain(String[]args){ newTest().a(); }}4.為了使下面的程序能夠輸出“Threadisrunning”,請在在空格處填上相應(yīng)的代碼。publicclassBimplementsRunnable{ publicstaticvoidmain(String[]args){Threadt=newThread(newB());__t.start()_____________________//此處填空 } publicvoidrun(){ System.out.println("Threadisrunning"); } publicvoidgo(){ start(1); } publicvoidstart(inti){ }}五、簡答題java中有幾種方法可以實現(xiàn)一個線程?請舉例說明。一種是繼承java.lang包下的Thread類,覆寫Thread類的run()方法,在run()方法中實現(xiàn)運行在線程上的代碼。newThread(){publicvoidrun(){}}.start();另一種就是實現(xiàn)java.lang.Runnable接口,同樣是在run()方法中實現(xiàn)運行在線程上的代碼。newThread(newRunnable(){publicvoidrun(){}}).start()sleep()和wait()有什么區(qū)別?調(diào)用sleep()方法,正在執(zhí)行的線程主動讓出CPU去執(zhí)行其他線程,在sleep()方法指定的時間過后,CPU才會回到這個線程上繼續(xù)往下執(zhí)行,如果當(dāng)前線程進入了同步鎖,sleep()方法并不會釋放鎖,即使當(dāng)前線程使用sleep()方法讓出了CPU,但其它被同步鎖擋住了的線程也無法得到執(zhí)行。wait()在一個已經(jīng)進入了同步鎖的線程進行調(diào)用,讓當(dāng)前線程暫時讓出同步鎖,以便其它正在等待此鎖的線程可以得到同步鎖并運行。當(dāng)其它線程調(diào)用了notify()方法后,調(diào)用wait()方法的線程就會解除wait狀態(tài),當(dāng)再次獲得同步鎖后,程序可以繼續(xù)向下執(zhí)行。六、編程題請按照題目的要求編寫程序并給出運行結(jié)果。1、通過繼承Thread類的方式創(chuàng)建兩個線程,在Thread構(gòu)造方法中指定線程的名字,并將這兩個線程的名字打印出來。2、通過實現(xiàn)Runnable接口的方式創(chuàng)建一個新線程,要求main線程打印100此次“main”,新線程打印50次“new”。3、模擬傳智播客的三個老師同時分發(fā)80份學(xué)習(xí)筆記,每個老師相當(dāng)于一個線程。4、編寫10個線程,第一個線程從1加到10,第二個線程從11加到20...第十個線程從91加到100,最后再把十個線程結(jié)果相加。JavaAPI一、填空題1、在Java中定義了兩個類來封裝對字符串的操作,它們分別是String_和_StringBuffer____。2、Java中的操作日期的類有_Date___、_Calendar___、DateFormat____等。3、在程序中若想取得一個Runtime實例,則可以調(diào)用Runtime類的靜態(tài)方法getRnutime()_____。4、Math類中用于計算所傳遞參數(shù)平方根的方法是_sqrt()____。5、Java中專門用于將日期格式化為字符串的類是_DateFormat____。6、Math類中有兩個靜態(tài)常量PI和E,分別代表數(shù)學(xué)常量_π___和_e___。7、Java中的用于產(chǎn)生隨機數(shù)的類是_Random___,它位于java.util____包中。8、String類中用于返回字符串字符個數(shù)的方法是_length()____。9、System類中所提供的屬性和方法都是_靜態(tài)___的,想要引用這些屬性和方法,直接使用System類調(diào)用即可。10、已知sb為StringBuffer的一個實例,且sb.toString()的值為"abcde",則執(zhí)行sb.reverse()后,sb.toString()的值為_”edcba_”___。二、判斷題1、String對象和StringBuffer對象都是字符串變量,創(chuàng)建后都可以修改。錯2、用運算符“==”比較字符串對象時,如果兩個字符串的值一樣,結(jié)果為true。錯3、System類中的currentTimeMillis()方法返回一個long類型的值。對4、Date、Calendar以與DateFormat類都位于java.util包中。錯分別java.util.Datejava.util.Calendarjava.text.DateFormat5、String類的方法replace(CharSequencesrt1,CharSequencesrt2)返回一個新的字符串,它是通過用srt2替換此字符串中出現(xiàn)的所有srt1得到的。對三、選擇題。1、先閱讀下面的程序片段:CStringstr="abccdefcdh";String[]arr=str.split("c");System.out.println(arr.length);程序執(zhí)行后,打印的結(jié)果是幾?A、2個B、3個C、4個D、5個2、以下都是Math類的常用方法,其中用于計算絕對值的方法是哪個?CA、ceil()B、floor()C、abs()D、random()3、Random對象能夠生成以下哪種類型的隨機數(shù)?DA、intB、stringC、doubleD、A和C4、Strings="abcdedcba";則s.substring(3,4)返回的字符串是以下選項中的哪個?C A、cdB、deC、dD、e5、假若indexOf()方法未能找到所指定的子字符串,則返回以下選項中的哪個?CA、falseB、0C、-1D、以上答案都不對6、要產(chǎn)生[20,999]之間的隨機整數(shù)可以使用以下哪個表達(dá)式?BA.(int)(20+Math.random()*97)B.20+(int)(Math.random()*980)C.(int)Math.random()*999D.20+(int)Math.random()*9807、以下Math類的方法中,-4.4通過哪個方法運算后,結(jié)果為-5.0?D(C)A.round()四舍五入B.min()C.floor()小于參數(shù)最大整數(shù)D.ceil()大于參數(shù)最小整數(shù)8、下面的程序段執(zhí)行后,輸出的結(jié)果是以下哪個選項?AStringBufferbuf=newStringBuffer("Beijing2008");buf.insert(7,"");System.out.println(buf.toString());A、Beijing2008B、Beijing2008C、Beijing2008D、Beijing#20089、閱讀下面的程序:Apublic
class
test
{
public
static
void
main(String
args[])
{
int
i;
float
f
=
2.3f;
double
d
=
2.7;
i
=
((int)Math.ceil(f))
*
((int)Math.round(d));
System.out.println(i);
}
}
程序執(zhí)行后,運行結(jié)果為以下哪個選項?A、
9
B、
5
C、6
D、
6.1
10、先閱讀下面的程序片段:BStringstr1=newString("java");Stringstr2=newString("java");StringBufferstr3=newStringBuffer("java");對于上述定義的變量,以下表達(dá)式的值為true的是哪個?A、
str1==str2;
B、str1.equals(str2);
C、str1==str3;
D、以上都不對四、程序分析題。閱讀下面的程序,分析代碼是否能編譯通過,如果能編譯通過,請列出運行的結(jié)果。如果不能編譯通過,請說明原因。代碼一:57.0-8.0-58.1-6.1publicclassA{ publicstaticvoidmain(String[]args){ System.out.println(Math.abs(-5)); System.out.println(Math.ceil(6.6)); System.out.println(Math.floor(-7.8)); System.out.println(Math.round(-4.9)); System.out.println(Math.max(8.1,-8.1)); System.out.println(Math.min(6.1,-6.1)); } }代碼二:str.length():15str.charAt(0):dlastIndexOf(m):"10substring(2,4):feindexOf(g):5publicclassB{ publicstaticvoidmain(String[]args){ Strings="dfferghuklmbdfd"; System.out.println("str.length():"+s.length());System.out.println("str.charAt(0):"+s.charAt(0)); System.out.println("lastIndexOf(m):"+s.lastIndexOf('m')); System.out.println("substring(2,4):"+s.substring(2,4));System.out.println("indexOf(g):"+s.indexOf('g')); }}五、簡答題
1、String和StringBuffer有什么區(qū)別?String類是不可變類,即字符串值一旦初始化后就不可能改變。StringBuffer是可變字符串類,類似String的緩沖區(qū),可以修改字符串的值。Date和Calender類有什么區(qū)別和聯(lián)系?Date類用來表示某個特定的瞬間,能夠精確到毫秒。而在實際應(yīng)用中,往往需要把一個日期中的年、月、日等信息單獨返回進行顯示或處理,這個類中的大部分方法都已被標(biāo)記過時。Calender類基本取代了Date類,該類中定義了一系列用于完成日期和時間字段操作的方法。Calendar的getTime()方法,getTime()返回一個表示Calendar時間值的Date對象,同時Calendar有一個setTime(Datedate)方法,setTime()方法接收一個Date對象,將Date對象表示的時間值設(shè)置給Calendar對象,通過這兩個方法就可以完成Date和Calendar對象之間的轉(zhuǎn)換。六、編程題請按照題目的要求編寫程序并給出運行結(jié)果編寫一個程序,實現(xiàn)字符串大小寫的轉(zhuǎn)換并倒序輸出,要求如下1)使用for循環(huán)將字符串“HelloWorld”從最后一個字符開始遍歷。2)遍歷的當(dāng)前字符如果是大寫字符,就使用toLowerCase()方法將其轉(zhuǎn)換為小寫字符,反之則使用toUpperCase()方法將其轉(zhuǎn)換為大寫字符3)定義一個StringBuffer對象,調(diào)用append()方法依次添加遍歷的字符,最后調(diào)用StringBuffer對象的toString()方法,并將得到的結(jié)果輸出。計算從今天算起,100天以后是幾月幾號,并格式化成xxxx年x月x日的形式打印出來。提示:1)調(diào)用Calendar類的add()方法計算100天后的日期2)調(diào)用Calendar的getTime()方法返回Date類型對象2)使用FULL格式的DateFormat對象,調(diào)用format()方法格式化Date對象3、利用Random類來產(chǎn)生5個20~50之間的隨機整數(shù)。 提示:[n-m](n、m均為整數(shù),n<m)之間的隨機數(shù)的公式為n+(newRandom()).nextInt(m-n+1)。集合類一、填空題1、JDK中提供了一系列可以存儲任意對象的類,統(tǒng)稱為集合。2、在創(chuàng)建TreeSet對象時,可以傳入自定義的比較器,自定義比較器需要實現(xiàn)Comparator接口。3、Collection有兩個子接口分別是List和Set,List集合的特點是有序、可重復(fù),Set集合的特點是無序、不可重復(fù)。4、使用Iterator遍歷集合時,首先需要調(diào)用hashNext()方法判斷是否存在下一個元素,若存在下一個元素,則調(diào)用next()方法取出該元素。5、集合按照存儲結(jié)構(gòu)的不同可分為單列集合和雙列集合,單列集合的根接口是Collection,雙列集合的根接口是Map。6、Map集合中的元素都是成對出現(xiàn)的,并且都是以鍵、值的映射關(guān)系存在。7、Iterator有一個子類,不僅可以對集合進行從前向后遍歷,還可以從后向前遍歷,該類是ListIterator。8、List集合的主要實現(xiàn)類有ArrayList、LinkedList,Set集合的主要實現(xiàn)類有HashSet、TreeSetMap集合的主要實現(xiàn)類有HashMap、TreeMap。9、Map集合中存儲元素需要調(diào)用put()方法,要想根據(jù)該集合的鍵獲取對應(yīng)的值需要調(diào)用get()方法。10、java.util包中提供了一個專門用來操作集合的工具類,這個類是Collections,還提供了一個專門用于操作數(shù)組的工具類,這個類是Arrays。二、判斷題1、Set集合是通過鍵值對的方式來存儲對象的。錯2、集合中不能存放基本數(shù)據(jù)類型,而只能存放引用數(shù)據(jù)類型。對3、如果創(chuàng)建的TreeSet集合中沒有傳入比較器,則該集合中存入的元素需要實現(xiàn)Comparable接口。對4、使用Iterator迭代集合元素時,可以調(diào)用集合對象的方法增刪元素。錯5、LinkedList在部維護了一個雙向循環(huán)鏈表,每一個元素節(jié)點都包含前一個元素節(jié)點和后一個元素節(jié)點的引用。對三、選擇題1、要想保存具有映射關(guān)系的數(shù)據(jù),可以使用以下哪些集合?(多選)BCA、ArrayListB、TreeMapC、HashMapD、TreeSet2、Java語言中,集合類都位于哪個包中?AA、java.utilB、java.langC、java.arrayD、java.collections3、使用Iterator時,判斷是否存在下一個元素可以使用以下哪個方法?DA、next()B、hash()C、hasPrevious()D、hasNext()4、關(guān)于foreach循環(huán)的特點,以下說法哪些是正確的?(多選)ABDA、foreach循環(huán)在遍歷集合時,無需獲得容器的長度B、foreach循環(huán)在遍歷集合時,無需循環(huán)條件,也無需迭代語句C、foreach循環(huán)在遍歷集合時非常繁瑣D、foreach循環(huán)的語法格式為:for(容器中元素類型臨時變量:容器變量)。5、在程序開發(fā)中,經(jīng)常會使用以下哪個類來存儲程序中所需的配置?C A、HashMapB、TreeSetC、PropertiesD、TreeMap 6、使用Enumeration遍歷集合時,需要使用以下哪些方法?(多選)AB A、hasMoreElements()B、nextElement()C、next()D、hashNext()7、要想集合中保存的元素沒有重復(fù)并且按照一定的順序排列,可以使用以下哪個集合?DA、LinkedListB、ArrayListC、hashSetD、TreeSet 8、下列哪些說法是正確的?(多選)ABA、LinkedList集合在增刪元素時效率較高B、ArrayList集合在查詢元素時效率較高C、HashMap不允許出現(xiàn)一對null鍵null值D、HashSet集合中元素可重復(fù)并且無序 9、以下哪些方法是LinkedList集合中定義的?(多選)ABC A、getLast()B、getFirst()C、remove(intindex)D、next() 10、獲取單列集合中元素的個數(shù)可以使用以下哪個方法?B A、length()B、size()C、get(intindex)D、add(Objectobj)四、分析題閱讀下面的程序,分析代碼是否能編譯通過,如果能編譯通過,請列出運行的結(jié)果。如果不能編譯通過,請說明原因。代碼一:程序可以編譯通過,輸出結(jié)果是“a、b、c”,因為TreeSet集合不允許存放重復(fù)元素,第2次增加的元素c會覆蓋之前存入的元素c,所以輸出結(jié)果是“a、b、c”,而不是“a、b、c、c”。importjava.util.*;publicclassTest01{ publicstaticvoidmain(String[]args){TreeSetts=newTreeSet();ts.add("b");ts.add("a");ts.add("c");ts.add("c");Iteratorit=ts.iterator();while(it.hasNext()){System.out.println(it.next());}}}代碼二:程序不可以編譯通過,這是由于向ArrayList集合中存入元素時,集合并不能記住元素的類型,因此在取出元素時,只能使用Object類型,而不能使用String類型。importjava.util.ArrayList;publicclassTest02{ publicstaticvoidmain(String[]args){ ArrayListlist=newArrayList(); list.add("a"); list.add("b"); list.add("c"); for(Stringobj:list){ System.out.println(obj); } }} 代碼三:程序可以編譯通過,但是什么也沒有打印。使用ListIterator進行從后向前的遍歷集合,可以使用以下兩種方法,一是使用listIterator(intindex)方法將索引index的值設(shè)置為集合元素的數(shù)目,也就是ListIteratorit=list.listIterator(3);,二是將程序先從前向后遍歷,然后再從后向前遍歷。importjava.util.*;publicclassTest03{ publicstaticvoidmain(String[]args){ ArrayListlist=newArrayList(); list.add("demo_1"); list.add("demo_2"); list.add("demo_3"); ListIteratorit=list.listIterator(); while(it.hasPrevious()){ Objectobj=it.previous(); System.out.print(obj+""); } }}代碼四:程序編譯不通過,由于Map集合在遍歷的過程中不能使用集合對象本身刪除元素,這會導(dǎo)致并發(fā)修改異常,若想刪除集合中的元素,可以使用Iterator的remove()方法。importjava.util.*;importjava.util.Map.*;publicclassTest04{ publicstaticvoidmain(String[]args){ Mapmap=newHashMap(); map.put(1,"Tom"); map.put(2,"Lucy"); map.put(3,"Annie"); SetkeySet=map.keySet(); Iteratorit=keySet.iterator(); while(it.hasNext()){ Objectkey=it.next(); System.out.println(key); map.remove(key); } }}五、簡答題1、什么是集合,請列舉集合中常用的類和接口?為了使程序能方便的存儲和操作數(shù)目不固定的一組數(shù)據(jù),JDK提供了一套類庫,這些類都位于java.util包中,統(tǒng)稱為集合。集合框架中包含3個接口,分別是List、Set、Map。集合中的List、Set、Map有什么區(qū)別?List的特點是元素有序、元素可重復(fù)。List接口的主要實現(xiàn)類有ArrayList和LinkedList。Set的特點是元素?zé)o序、元素不可重復(fù)。Set接口的主要實現(xiàn)類有HashSet和TreeSet。Map的特點是存儲的元素是鍵(Key)、值(Value)映射關(guān)系,元素都是成對出現(xiàn)的。Map接口的主要實現(xiàn)類有HashMap和TreeMap。請說說Collection和Collections的有什么區(qū)別?Collection是一個單例集合接口。它提供了對集合對象進行基本操作的通用方法。Collections是一個工具類。它包含各種有關(guān)集合操作的方法。六、編程題請按照題目的要求編寫程序并給出運行結(jié)果。使用ArrayList集合,對其添加10個不同的元素,并使用Iterator遍歷該集合。提示:1)使用add()方法將元素添加到ArrayList集合中。2)調(diào)用集合的iterator()方法獲得Iterator對象,并調(diào)用Iterator的hasNext()和next()方法,迭代出集合中的所有元素。在HashSet集合中添加三個Person對象,把一樣的人當(dāng)做同一個人,禁止重復(fù)添加。提示:1)Person類中定義name和age屬性,重寫hashCode()方法和equals()方法,針對Person類的name屬性進行比較,如果name一樣,hashCode()方法的返回值一樣,equals方法返回true。3、選擇合適的Map集合保存5位學(xué)員的學(xué)號和,然后按學(xué)號的自然順序的倒序?qū)⑦@些鍵值對一一打印出來。提示:1)創(chuàng)建TreeMap集合。2)使用put()方法將學(xué)號(“1”、“2”、“3”、“4”、“5”)和(“Lucy”、“John”、“Smith”、“Aimee”、“Amanda”)存儲到Map中,存的時候可以打亂順序觀察排序后的效果。3)使用map.keySet()獲取鍵的Set集合。4)使用Set集合的iterator()方法獲得Iterator對象用于迭代鍵。5)使用Map集合的get()方法獲取鍵所對應(yīng)的值。IO(輸入輸出)一、填空題1、Java中的IO流,按照傳輸數(shù)據(jù)不同,可分為__字節(jié)流__和__字符流__。2、在Java中,__File__類用于操作磁盤中文件和目錄,位于__java.io__包中。3、在Java中,_SequenceInputStream__類用來把兩個或更多的InputStream輸入流對象合并為單個InputStream輸入流對象使用。4、Java中提供了一個類__RandomAccessFile__,它不但具有讀寫文件的功能,并且可以隨機地從文件的任何位置開始執(zhí)行讀寫數(shù)據(jù)的操作。5、在Java中,能實現(xiàn)線程間通信的流是__管道流__。6、Java中提供了一個可以在讀文件的同時記錄行號的類,這個類是__LineNumberReader__,它是__BufferedReader__的直接子類,它通過__setLineNumber(int)__和__HYPERLINK"mk:@MSITStore:E:\\文件\\傳智播客教材\\J2SE6.0_CN.chm::/j
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 胎盤EVs的基因編輯與治療策略-洞察分析
- 細(xì)胞療法在膝關(guān)節(jié)退變中的應(yīng)用研究-洞察分析
- 藝術(shù)品市場風(fēng)險預(yù)警系統(tǒng)-洞察分析
- 因果推斷跨學(xué)科研究-洞察分析
- 網(wǎng)絡(luò)安全法規(guī)-洞察分析
- 醫(yī)藥泡沫包裝對藥品保護效果研究-洞察分析
- 水利工程智能化發(fā)展-洞察分析
- 穴位療法對更年期潮熱療效評估-洞察分析
- 休閑馬術(shù)運動市場潛力-洞察分析
- 天然成分飲料創(chuàng)新-洞察分析
- 形式邏輯金岳霖課后習(xí)題答案
- 2024新反洗錢法學(xué)習(xí)課件
- 2024年新疆區(qū)公務(wù)員錄用考試《行測》真題及答案解析
- 《數(shù)字營銷》全套教學(xué)課件
- 校園足球匯報
- 2024年表面活性劑行業(yè)發(fā)展趨勢分析:我國表面活性劑產(chǎn)量增長至388.52萬噸
- 中國特色社會主義理論與實踐研究學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 投資款退款合同模板
- DB14-T 1049.1-2020 山西省用水定額 第1部分:農(nóng)業(yè)用水定額
- 2024秋期國家開放大學(xué)《機械設(shè)計基礎(chǔ)》一平臺在線形考(形考任務(wù)1至4)試題及答案
- 胎教故事100個必讀
評論
0/150
提交評論