《Java基礎(chǔ)入門》課后習(xí)題及答案
《《Java基礎(chǔ)入門》課后習(xí)題及答案》由會員分享,可在線閱讀,更多相關(guān)《《Java基礎(chǔ)入門》課后習(xí)題及答案(53頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、Java 基礎(chǔ)入門》課后習(xí)題及答案 《Java基礎(chǔ)入門》課后習(xí)題 第1章Java開發(fā)入門 一、填空題 1 、Java的三大體系分別就是_JavaSE、_JavaEE、_JavaME。 2 、Java程序的運(yùn)行環(huán)境簡稱之為JRE。 3 、編譯Java程序需要使用_javac命令。 4 、javac、exe與java、exe兩個可執(zhí)行程序存放在JDK安裝目錄的bin目錄下。 5、 path環(huán)境變量用來存儲Java的編譯與運(yùn)行工具所在的路徑,而_classpath環(huán)境變量則用 來保存保存Java虛擬機(jī)要運(yùn)行的“、class”文件路徑。 二、選擇題 1 、以下選項(xiàng)中,哪些屬于
2、JDK工具?(多選)ABCD A、Java編譯器B、Java運(yùn)行工具C、Java文檔生成工具D、Java打包工具 2 、Java屬于以下哪種語言?C A、機(jī)器語言B、匯編語言C、高級語言D、以上都不對 3、下面哪種類型的文件可以在Java虛擬機(jī)中運(yùn)行?D A、、javaB、、jreC、、exeD、、class 4、安裝好JDK后,在其bin目錄下有許多exe可執(zhí)行文件淇中java、exe命令的作用就是以下哪一種?B A、Java文檔制作工具B、Java解釋器C、Java編譯器D、Java啟動器 5、如果jdk的安裝路徑為:d:\jdk,若想在命令窗口中任何當(dāng)前路徑下,都可以直接
3、使用javac與java命令, 需要將環(huán)境變量path設(shè)置為以下哪個選項(xiàng)?B A.d:\jdk;B.d:\jdk\bin;C.d:\jre\bin;D.d:\jre; 三、問答題 1、簡述Java的特點(diǎn)。 面向?qū)ο蟆⒖缙脚_性、健壯性、安全性、可移植性、多線程性、動態(tài)性等。 2、簡述JRE與JDK的區(qū)別。 JRE(JavaRuntimeEnvironment,Java運(yùn)行時環(huán)境工它相當(dāng)于操作系統(tǒng)部分提供了Java程序運(yùn)行時 所需要的基本條件與許多Java基礎(chǔ)類,例如,IO類、GUI控件類、網(wǎng)絡(luò)類等。JRE就是提供給普通用戶 使用的,如果您只想運(yùn)行別人開發(fā)好的Java程序,那么,
4、您的計(jì)算機(jī)上必須且只需安裝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)包
5、含了JRE部分,初學(xué)者安裝JDK后不必再去下載與安裝JRE了。 四、編程題 使用記事本編寫一個HelloWorld程序,在dos命令行窗口編譯運(yùn)行。請按照題目的要求編寫程序并給出 運(yùn)行結(jié)果。 publicclassHelloWorld{publicstaticvoidmain(String口args){ System、out、println("這就是第一個Java程序!");}} 第2章Java編程基礎(chǔ) 一、填空題 1、Java中的程序代碼都必須在一個類中定義,類使用__class■關(guān)鍵字來定義。 2、布爾常量即布爾類型的兩個值,分別就是_true與_flase。 3、J
6、ava中的注釋可分為三種類型,分別就是_單行注釋//__、__多行注釋_/**/__、文檔/注釋** */。 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、在邏輯運(yùn)算符中,運(yùn)算符___&___與___&&___用于表示邏輯與,__|與__||表示邏輯或。 7、若x=2,則表達(dá)式(x++)/3的值就是__0___。 8、若inta=2;a+=3;執(zhí)行后,變量a的值為__5。 9、若int[]a=
7、{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表示的就是一個十六進(jìn)制整數(shù)。對 3、 continue語句只用于循環(huán)語句中,它的作用就是跳出循環(huán)。錯 4、“/*…*/'中可以嵌套“//”注釋,但不能嵌套“/*???*/”注釋。對 5、 -5%3的運(yùn)算結(jié)果就是2。錯 三、選擇題 1、以下選項(xiàng)中,哪些屬于合法的標(biāo)識符?(多選)AD A、Hello_WorldB、classC、123user
8、nameD、username123 2、關(guān)于方法重載的描述,以下選項(xiàng)中哪些就是正確的?(多選)(AD)ABD A、方法名必須一致 B、返回值類型必須不同 C、參數(shù)個數(shù)必須一致D、參數(shù)的個數(shù)或類型不一致 3、以下關(guān)于變量的說法錯誤的就是?C A、變量名必須就是一個有效的標(biāo)識符 B、變量在定義時可以沒有初始值 C、變量一旦被定義,在程序中的任何位置都可以被訪問 D、在程序中,可以將一個byte類型的值賦給一個int類型的變量,不需要特殊聲明 4、以下選項(xiàng)中,switch語句判斷條件可以接收的數(shù)據(jù)類型有哪些?(多選)ABCD A、intB、byteC、charD、short
9、 5、假設(shè)intx=2,三元表達(dá)式x>0?x+1:5的運(yùn)行結(jié)果就是以下哪一個?C A、0B、2C、3D、5 6、下面的運(yùn)算符中,用于執(zhí)行除法運(yùn)算就是哪個?A A、/B、\C、%D、* 7、下列語句哪些屬于循環(huán)語句?(多選)AC A、for語句B、if語句C、while語句D、switch語句 8、下面哪種寫法可以實(shí)現(xiàn)訪問數(shù)組arr的第1個元素?A A、arr[0]B、arr(0)C、arr[1]D、arr⑴ 9、以下哪個選項(xiàng)可以正確創(chuàng)建一個長度為3的二維數(shù)組?(B)C A、newint[2][3];B、newint[3肛 C、newint[][3];D、以上答案皆不對
10、10、請先閱讀下面的代碼。 intx=1; inty=2; if(x%2==0){y++; 《Java基礎(chǔ)入門》課后習(xí)題及答案 }else{ y--; } System、out、println("y="+y); 上面一段程序運(yùn)行結(jié)束時,變量y的值為下列哪一項(xiàng)?A A、1B、2C、3D、switch語句 四、程序分析題 閱讀下面的程序,分析代碼就是否能夠編譯通過,如果能編譯通過,請列出運(yùn)行的結(jié)果。否則請說明編譯 失敗的原因。 代碼一:b=7(編譯不通過。int值4與b相加時,由于變量b的類型為byte,取值范圍沒有int類型大,存不 下int類型的值,因此編譯不
11、通過) publicclassTest01{ publicstaticvoidmain(String口args){byteb=3; b=b+4; System、out、println("b="+b);} } 代碼二:不能,y只在{}有效(編譯不通過。這就是因?yàn)閥就是在最里層的代碼塊中定義的一個變量,只 有在那個代碼) publicclassTest02{ publicstaticvoidmain(String口args){intx=12; { inty=96; System、out、println("xis"+x); System、out、println("yis"+
12、y);}y=x; System、out、println("xis"+x);} } 代碼三:3因?yàn)闆]有break,,所以4以后都執(zhí)行 publicclassTest03{ publicstaticvoidmain(Stringargs口){intx=4,j=0; switch(x){ case 1: j++; case 2: j++; case 3: j++; case 4: j++; case 5: j++; default:j++;}System、out、println(j);}} 代碼四: 9 8 7 publicclassTest04{ publ
13、icstaticvoidmain(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單精度浮點(diǎn)型,占4個字節(jié)。double雙精度浮點(diǎn)型,占8個字節(jié)。char字符型,占兩個字節(jié)。boolean型,表示邏輯值,有true與false兩個值,分別占一個字節(jié)。 2
14、、簡述&&與&的區(qū)別并舉例說明。
如果使用“&”在表達(dá)式之間進(jìn)行連接,那么無論任何情況,“&”兩邊的表達(dá)式都會參與計(jì)算。如果使用“&&”
進(jìn)行連接,當(dāng)“&&”左邊的表達(dá)式為false,則不會執(zhí)行其右邊的表達(dá)式。例如定義intx=2,y=0;booleanb=
x 15、據(jù)實(shí)際參數(shù)的不同綁定到不同的方法。
六、編程題
請按照題目的要求編寫程序并給出運(yùn)行結(jié)果。
1、請編寫程序,實(shí)現(xiàn)計(jì)算“1+3+5+7+…+99"的值。
提示:
1)使用循環(huán)語句實(shí)現(xiàn)自然數(shù)1~99的遍歷。
2)在遍歷過程中,通過條件判斷當(dāng)前遍歷的數(shù)就是否為奇數(shù),如果就是就累加,否則不加。
2、已知函數(shù)
J
x+3(x>0)
,0(x=0)
jx2T(x<0)
請?jiān)O(shè)計(jì)一個方法實(shí)現(xiàn)上面的函數(shù),根據(jù)傳入的值x的不同,返回對應(yīng)的y值。
提示:
1)定義一個static修飾符修飾的方法,方法接收一個int類型的參數(shù)x,返回值為int類型。
2)在方法中使用if…elseif、、 16、else語句針對x的值進(jìn)行三種情況的判斷。
3)根據(jù)判斷結(jié)果分別執(zhí)行不同的表達(dá)式,并將結(jié)果賦予變量y。
4)在方法的最后返回y的值。
5)在main方法中調(diào)用設(shè)計(jì)好的方法,傳入一個int型的值,將方法的返回值打印。
3、請編寫程序,實(shí)現(xiàn)對數(shù)組{25,24,12,76,101,96,28}的排序。
提示:使用冒泡排序算法。
Java 基礎(chǔ)入門》課后習(xí)題及答案
第3章面向?qū)ο?上)
一、填空題
1、 、面向?qū)ο蟮娜筇卣骶褪欠庋b性_、_繼承性與__多態(tài)性。
2、 在Java中,可以使用關(guān)鍵字__new來創(chuàng)建類的實(shí)例對象。
3、 定義在類中的變量被稱為__成員變量,定義在方 17、法中的變量被稱為局部變量
4、 面向?qū)ο蟪绦蛟O(shè)計(jì)的重點(diǎn)就是_類___的設(shè)計(jì),__類就是用來創(chuàng)建對象的模板。
5、 在非靜態(tài)成員方法中,可以使用關(guān)鍵字_this__訪問類的其它非靜態(tài)成員。
6、 當(dāng)一個對象被當(dāng)成垃圾從內(nèi)存中釋放時,它的__finalize()方法會被自動調(diào)用。
7、 被static關(guān)鍵字修飾的成員變量被稱為_靜態(tài)變量_,它可以被該類所有的實(shí)例對象共享。
8、 在一個類中,除了可以定義屬性、方法,還可以定義類,這樣的類被稱為_內(nèi)部類。
9、 在Java中,提供了一個」avadoc命令,用于將程序中的文檔注釋提取出來,生成HTML格式的幫
助文檔。
10、 所謂類的 18、封裝就是指在定義一個類時,將類中的屬性私有化,即使用_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、方法內(nèi)部類中不能訪問外部類的成員變量。錯
三、選擇題
1、類的定義必須包含在以下哪種符號之間?
A、方括號[] B、花括號{ 19、} C、
2、下面哪一個就是正確的的聲明? D
A、 public void HH {…}
C 、 public class void number{}
3、在以下什么情況下 ,構(gòu)造方法會被調(diào)用?
A 、 定義時 B、 創(chuàng)建對象時
4、下面對于構(gòu)造方法的描述 ,正確有哪些?
A 、方法名必須與名相同
D 、圓括號 ()
B、public class Move() {…}
D、 public class Car {…}
B
C、 調(diào)用對象方法時 D、 使用對象的變量時
(多選 )ABC
B、方法名的前面沒有返回值型的聲明
C、在方法中不能使用return語句返回 20、一個值
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、成員內(nèi)部類
7、關(guān)于內(nèi)部,下面說法正確的就是?(多選)ACD(ABCD)
A、成員內(nèi)部 21、就是外部的一個成員,可以訪問外部的其它成員
B、外部可以訪問成員內(nèi)部的成員
C、方法內(nèi)部類只能在其定義的當(dāng)前方法中進(jìn)行實(shí)例化
《Java基礎(chǔ)入門》課后習(xí)題及答案
D、靜態(tài)內(nèi)部類中可以定義靜態(tài)成員,也可以定義非靜態(tài)成員
8、下面對于單例設(shè)計(jì)模式的描述,正確的就是?(多選)BCD(ABCD)
A、類中定義一個無參的構(gòu)造方法,并且聲明為私有
B、在內(nèi)部創(chuàng)建一個該類的實(shí)例對象,使用靜態(tài)變量引用該實(shí)例對象
C、使用private修飾靜態(tài)變量,禁止外界直接訪問
D、定義靜態(tài)方法返回該類實(shí)例
9、請先閱讀下面的代碼 D
public class Test {
public Tes 22、t(){
System、out、println(" }
public Test(int x){
this();
System、out、println(" }
public Test(boolean b){
this(1);
System、out、println(" }
構(gòu)造方法一被調(diào)用了 ");
構(gòu)造方法二被調(diào)用了 ");
構(gòu)造方法三被調(diào)用了 ");
publicstaticvoidmain(String口args){Testtest=newTest(true);
}
}
上面程序的運(yùn)行結(jié)果為下列哪一項(xiàng)?
A、構(gòu)造方法一被調(diào)用了
B、構(gòu)造方法二被調(diào)用了
23、
C、構(gòu)造方法三被調(diào)用了
D、以上三個選項(xiàng)之與
10、Outer類中定義了一個成員內(nèi)部類
Inner,需要在main()方法中創(chuàng)建Inner類實(shí)例對象,以下四種方式
哪一種就是正確的? D
A、
Inner in = new Inner()
B、Inner in = new Outer、Inner();
C、Outer、Innerin=newOuter、Inner();D、Outer、Innerin=newOuter()、newInner();
四、程序分析題
閱讀下面的程序,分析代碼就是否能夠編譯通過,如果能編譯通過,請列出運(yùn)行的結(jié)果。否則請說明編譯失 24、敗的原因。
代碼一:不能,secret就是私有成員,只能類內(nèi)部訪問(程序不能編譯通過,因?yàn)樵陬怉中的成員變量secret
用private修飾,所以在類Testi中無法訪問)classA{privateintsecret=5;
}publicclassTesti{publicstaticvoidmain(String口args){Aa=newA();System、out、println(a、secret++);
}}
代碼二:250(程序不能編譯通過,因?yàn)樵陟o態(tài)方法method()中不能訪問非靜態(tài)成員變量x。)
publicclassTest2{intx=50;staticinty 25、=200;
publicstaticvoidmethod(){
System、out、println(x+y);}publicstaticvoidmain(String口args){Test2、method();}}
代碼三:Inner為私有內(nèi)部類,不允許外部訪問(inner)Innerinner=newOuter。、newInner();可以用外部類
訪問內(nèi)部類
publicclassOuter{
publicStringname="Outer";
privateclassInner{
Stringname="inner";
voidshowName(){
System、 26、out、println(name);
}
}
publicstaticvoidmain(String[]args){
Innerinner=newOuter()、newInner();
System、out、println(inner、name);}}
五、簡答題
1、構(gòu)造方法與普通的成員方法有什么區(qū)別?
構(gòu)造方法就是類的一個特殊成員,它會在類實(shí)例化對象時被自動調(diào)用。而普通方法只有在使用的時候才
會被調(diào)用。在定義構(gòu)造方法時要求方法名與類名相同、在方法名的前面沒有返回值類型的聲明、在方法中
不能使用return語句返回一個值
2、單例設(shè)計(jì)模式具備哪些特點(diǎn)?
單例模式可以保 27、證在整個程序運(yùn)行期間針對該類只存在一個實(shí)例對象。六、編程題
1、請按照以下要求設(shè)計(jì)一個學(xué)生類Student,并進(jìn)行測試。
要求如下:
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類,并進(jìn)行測試。
要求如 28、下:
1)Father類為外部類,類中定義一個私有的String類型的屬性name,name的值為"zhangjun”。
2)Child類為Father類的內(nèi)部類淇中定義一個introFather()方法,方法中調(diào)用Father類的name屬性。
3)定義一個測試類Test,在Test類的main()方法中創(chuàng)建Child對象,并調(diào)用introFather()方法。
第4章面向?qū)ο?下)
一、填空題
1、在Java語言中,允許使用已存在的類作為基礎(chǔ)創(chuàng)建新的類,這種技術(shù)我們稱為繼承。
2、一個類如果實(shí)現(xiàn)一個接口,那么它就需要實(shí)現(xiàn)接口中定義的全部一方法,否則該類就必須定義成
抽象類。 29、
3、在程序開發(fā)中,要想將一個包中的類導(dǎo)入到當(dāng)前程序中,可以使用_import關(guān)鍵字。
4、一個類可以從其它的類派生出來,派生出來的類稱為—子類,用于派生的類稱為_基類或者
父類。
5、JDK中定義了大量的異常類,這些類都就是.Exception類的子類或者間接子類。
6、定義一個Java類時,如果前面加使用_final關(guān)鍵字修飾,那么該類不可以被繼承。
7、如果子類想使用父類中的成員,可以通過關(guān)鍵字__super引用父類的成員。
8、在Java語言中,所有的類都直接或間接繼承自.Object類。
9、異常的捕獲通常由try、catch兩部分組成,_try代碼塊用來存放可能發(fā)生 30、異常,_catch代碼
塊用
來處理產(chǎn)生的異常。
10、在Java語言中耍想就是將一個已編譯的類打包成jar文件,可以使用的命令就是jar-cvf,要想
在命令行窗口運(yùn)行jar文件,可以使用的命令就是__java-jar。
二、判斷題
1、抽象方法必須定義在抽象類中,所以抽象類中的方法都就是抽象方法。錯
2、Java中被final關(guān)鍵字修飾的變量,不能被重新賦值。對
《Java基礎(chǔ)入門》課后習(xí)題及答案
3、不存在繼承關(guān)系的情況下,也可以實(shí)現(xiàn)方法重寫。錯
4、package聲明語句應(yīng)當(dāng)為Java源文件中的第一條語句。對
5、 接口中只能定義常量與抽象方法。錯(對)
三 31、、選擇題
1 、在類的繼承關(guān)系中,需要遵循以下哪個繼承原則?B
A、多重B、單一C、雙重D、不能繼承
2、在Java語言中,以下哪個關(guān)鍵字用于在方法上聲明拋出異常?C
A、tryB、catchC、throwsD、throw
3、關(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、以下說法哪些就是正確的?(多選)ABCD
A、Java語言中允許一個類實(shí)現(xiàn)多 32、個接口
B、Java語言中不允許一個類繼承多個類
C、Java語言中允許一個類同時繼承一個類并實(shí)現(xiàn)一個接口
D、Java語言中允許一個接口繼承一個接口
5、類中的一個成員方法被下面哪個修飾符修飾,該方法只能在本類被訪問?C
A、publicB、protectedC、privateD、default
6、關(guān)于抽象類的說法哪些就是正確的?(多選)AC
A、抽象類中可以有非抽象方法。
B、如果父類就是抽象類,則子類必須重寫父類所有的抽象方法。
C、不能用抽象類去創(chuàng)建對象。
D、接口與抽象類就是同一個概念。
7、在Java中,要想讓一個類繼承另一個類,可以使用以下哪個關(guān)鍵字?C 33、
A、inherits B、implements
C、extends
D、modifies
8、System類位于以下哪個包中? D
A、java、io B、java、util
C、java、awt D、java、lang
9、已知類的繼承關(guān)系如下 :A
class Employee;
class Manager extends Employee;
class Director extends Employee;
則以下語句能通過編譯的有哪些?
A、 Employee e=new Manager。;
B、 Director d=new Manager。 34、;
C、 Director d=new Employee。;
D、Manager m=new Director。;
10、編譯運(yùn)行下面的程序,結(jié)果就是什么? B
public class A {
public static void main(String口 args) {
B b = new B();
b、test();
}
void test() {
System、out、print("A");
}
}
class B extends A {
void test() {
super 、test();
System、out、print("B");
} 35、
}
A、產(chǎn)生編譯錯誤
B、代碼可以編譯運(yùn)行,并輸出結(jié)果AB
C、代碼可以編譯運(yùn)行,但沒有輸出D、編譯沒有錯誤,但會產(chǎn)生運(yùn)行時異常
四、分析題閱讀下面的程序,分析代碼就是否能編譯通過,如果能編譯通過,請列出運(yùn)行的結(jié)果。如果不能編譯通過請說明原因。
代碼一:進(jìn)入catch代碼塊
進(jìn)入finally代碼塊(程序編譯能通過,這就是因?yàn)閕ntx=2/0;System、out、println(x);這兩條語句使用了try塊,捕獲了程序因?yàn)槌浴6a(chǎn)生的異常情況,之后程序會繼續(xù)向下執(zhí)行,輸出“進(jìn)入catch代碼塊”
“進(jìn)入finally代碼塊”。)
publicclassTest 36、01{publicstaticvoidmain(String口args){try{
intx=2/0;
System、out、println(x);}catch(Exceptione){
System、out、println("進(jìn)入catch代碼塊");}finally{
System、out、println("進(jìn)入finally代碼塊");}}}
代碼二:不能,final修飾shout不能被重寫(程序編譯不通過,這就是因?yàn)樵诔绦蛑惺褂昧薴inal關(guān)鍵字修飾
Animal類,使彳導(dǎo)Animal類不能被繼承。shout()方法中同樣使用了final關(guān)鍵字,使得該方法不能被重寫。)
37、finalclassAnimal{publicfinalvoidshout(){//程序代碼
}}classDogextendsAnimal{
publicvoidshout(){//程序代碼
}}
classTest02{publicstaticvoidmain(String[]args){
Dogdog=newDog();}}代碼三:動物叫!汪汪……classAnimal{voidshout(){
System、out、println("動物叫!");}}classDogextendsAnimal{voidshout(){super、shout();System、out、pri 38、ntln("汪汪");
}}publicclassTest03{publicstaticvoidmain(String口args){Animalanimal=newDog();animal、shout();}}
代碼四:不能,Dog沒有實(shí)現(xiàn)Animal所有方法,Dog為抽象類不能創(chuàng)建對象(程序編譯不通過,因?yàn)榻涌谥卸x的方法不能有方法體,所以定義的eat()方法就是錯誤的。接口中的方法必須在子類中全部實(shí)現(xiàn),由于run()
方法在子類中并沒有重新實(shí)現(xiàn),所以這也就是錯誤的。)
interfaceAnimal{voidbreathe();voidrun();voideat(){};}clas 39、sDogimplementsAnimal{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ù)列表,則稱子類 40、
的該方法重寫(覆蓋)父類的方法。
2、什么就是多態(tài)?
多態(tài)意味著一個對象有著多種形態(tài),可以在特定的情況下,表現(xiàn)不同的狀態(tài),從而對應(yīng)著不同的屬性
與方法。簡單的說,多態(tài)就就是使用父類類型的變量引用子類對象,根據(jù)被引用子類對象的特性,程序會得到
不同的運(yùn)行效果。
3、抽象類與接口的區(qū)別?
在Java中,使用abstract關(guān)鍵字修飾的類稱之為抽象類。抽象類就是不能被實(shí)例化的,通常需要寫
一個子類來繼承抽象類,同時實(shí)例化子類來獲得該類的對象。抽象類通常用于表示一種抽象的概念。
接口可以說就是一種特殊的抽象類,接口中只能定義常量與抽象方法。由于接口的特殊性,在定義時
需要使用in 41、terface關(guān)鍵字。
六、編程題
請按照題目的要求編寫程序并給出運(yùn)行結(jié)果。
1、設(shè)計(jì)一個學(xué)生類Student與它的一個子類Undergraduate,要求如下:
1)Student類有name(姓名)、與age(年齡)屬性,一個包含兩個參數(shù)的構(gòu)造方法,用于給name與age
屬性賦值,一個show()方法打印Student的屬性信息
2)本科生類Undergraduate增加一個degree(學(xué)位)屬性。有一個包含三個參數(shù)的構(gòu)造方法,前兩個
參數(shù)用于給繼承的name與age屬性賦值,第三個參數(shù)給degree專業(yè)賦值,一個show()方法用于
打印Undergraduate的屬 42、性信息
3)在測試類中分別創(chuàng)建Student對象與Undergraduate對象,調(diào)用它們的show()。
《 Java 基礎(chǔ)入門》課后習(xí)題及答案
2、設(shè)計(jì)一個Shape接口與它的兩個實(shí)現(xiàn)類Square與Circle,要求如下:
1)Shape接口中有一個抽象方法area(),方法接收有一個double類型的參數(shù),返回一個double類型的
結(jié)果
2)Square與Circle中實(shí)現(xiàn)了Shape接口的area()抽象方法,分別求正方形與圓形的面積并返回
在測試類中創(chuàng)建Square與Circle對象,計(jì)算邊長為2的正方形面積與半徑為3的圓形面積
3、自定義一個異常類NoThi 43、sSoundException與Player類,在Player的play()方法中使用自定義異常,要
求入下:
1 )NoThisSongException繼承Exception類,類中有一個無參與一個接收一個String類型參數(shù)的構(gòu)
造方法,構(gòu)造方法中都使用super關(guān)鍵字調(diào)用父類的構(gòu)造方法。
2 )Player類中定義一個play(intindex)方法,方法接收一個int類型的參數(shù),表示播放歌曲的索引,
當(dāng)index>10時,paly()方法用throw關(guān)鍵字拋出NoThisSongException異常,創(chuàng)建異常對象時,調(diào)用有參的構(gòu)造方法,傳入“您播放的歌曲不存在”。
3) 44、在測試類中創(chuàng)建Player對象,并調(diào)用play()方法測試自定義的NoThisSongException異常,使用
try…catch語句捕獲異常,調(diào)用NoThisSongException的getMessage()方法打印出異常信息。
第5章多線程
一、填空題
1 、一個應(yīng)用程序中有多條并發(fā)執(zhí)行的線索,每條線索都被稱作一個線程,它們會交替執(zhí)行,彼此
間可以進(jìn)行_通信。
2、在實(shí)現(xiàn)多線程的程序時有兩種方式,一就是通過繼_Thread承類,二就是通過實(shí)現(xiàn)
Runnable接口。
3、 yield()方法只能讓相同優(yōu)先級或者更高優(yōu)先級、處于_就緒狀態(tài)的線程獲得運(yùn)行的機(jī)會。
4、 45、在Java語言中,同步方法需要用到關(guān)鍵字_synchronized_,對于同步方法而言無需指定同步鎖,它的同
步
鎖就是方法所在的_對象,也就就是_this(關(guān)鍵字)。
5、在多任務(wù)系統(tǒng)中,每個獨(dú)立執(zhí)行的程序稱之為_線程,也就就是“正在運(yùn)行的程序”。
6、線程的整個生命周期分為五個階段,分別就是_新建、就緒、_運(yùn)行、_阻塞、
與死亡。
7、線程的優(yōu)先級用1~10之間的整數(shù)來表示,其中__10___代表優(yōu)先級最高,__1___代表優(yōu)先級最低。
8、在Thread類中,提供了一個start()方法,該方法用于啟動線程,當(dāng)新線程啟動后,系統(tǒng)會自動調(diào)
用__run()方法。
9、要想 46、解決線程間的通信問題,可以使用__wait()、notify()、_notifyALL()方法。
10、要將某個線程設(shè)置為后臺線程,需要調(diào)用該線程的_setDaemon(true)方法,該方法必須在
_start()方法之前調(diào)用。
二、判斷題
1、當(dāng)我們創(chuàng)建一個線程對象時,該對象表示的線程就立即開始運(yùn)行。錯
2、如果前臺線程全部死亡,后臺線程也會自動死亡。對
3、同步代碼塊中的鎖對象可以就是任意類型的對象。對
4、靜態(tài)方法不能使用synchronized關(guān)鍵字來修飾。錯
5、線程結(jié)束等待或者阻塞狀態(tài)后,會進(jìn)入運(yùn)行狀態(tài)。錯
三、選擇題
1 、Thread類位于下列哪個包中?B 47、
A、java、ioB、java、langC、java、utilD、java、awt
2、關(guān)于線程的創(chuàng)建過程,下面四種說法正確的有哪些?(多選)AC
A、定義Thread類的子類,重寫Thread類的run()方法,創(chuàng)建該子類的實(shí)例對象,調(diào)用對象的start()方
法
B、定義Thread類的子類,重寫Thread類的run()方法,創(chuàng)建該子類的實(shí)例對象,調(diào)用對象的run()方法
C、定義一個實(shí)現(xiàn)Runnable接口的類并實(shí)現(xiàn)run()方法,創(chuàng)建該類實(shí)例對象,將其作為參數(shù)傳遞給
Thread類的構(gòu)造方法來創(chuàng)建Thread對象,調(diào)用Thread對象的start()方法
D、定義一 48、個實(shí)現(xiàn)Runnable接口的類并實(shí)現(xiàn)run()方法,創(chuàng)建該類對象,然后調(diào)用run()方法
3、對于通過實(shí)現(xiàn)Runnable接口創(chuàng)建線程,下面說法正確的有哪些?(多選)ABC
A、適合多個相同程序代碼的線程去處理同一個資源的情況
B、把線程同程序代碼、數(shù)據(jù)有效的分離,很好的體現(xiàn)了面向?qū)ο蟮脑O(shè)計(jì)思想
C、可以避免由于Java的單繼承帶來的局限性
D、編寫簡單,可以不通過Thread類直接創(chuàng)建線程
4、對于線程的生命周期,下面四種說法正確的有哪些?(多選)ABC(BC)
A、調(diào)用了線程的start()方法,該線程就進(jìn)入運(yùn)行狀態(tài)(就緒,還要獲得CPU使用權(quán))
B、線程的run()方法運(yùn) 49、行結(jié)束或被未catch的InterruptedException等異常終結(jié),那么該線程進(jìn)入死亡
狀態(tài)
C、線程進(jìn)入死亡狀態(tài),但就是該線程對象仍然就是一個Thread對象,在沒有被垃圾回收器回收之前
仍可以像引用其它對象一樣引用它
D、線程進(jìn)入死亡狀態(tài)后,調(diào)用它的start()方法仍然可以重新啟動
5、對于死鎖的描,下面四種說法正確有哪些?(多選)AB(ABD)
A、當(dāng)兩個線程互相等待對方釋放同步鎖時會發(fā)生死鎖
B、Java虛擬機(jī)沒有檢測與處理死鎖的措施
C、一旦出現(xiàn)死鎖,程序會發(fā)生異常
《Java基礎(chǔ)入門》課后習(xí)題及答案
D、處于死鎖狀態(tài)的線程處于阻塞狀態(tài),無法繼續(xù)運(yùn)行 50、
6、下面四個選項(xiàng)中,哪些就是線程進(jìn)入阻塞狀態(tài)的原因?(多選)ABC
A、線程試圖獲取某個對象的同步鎖,而該鎖被其它線程持有
B、線程調(diào)用了另一個線程的join()方法
C、當(dāng)線程調(diào)用了一個阻塞式的IO方法
D、線程調(diào)用了setDaemon(booleanb)方法
7、線程調(diào)用sleep()方法后,該線程將進(jìn)入以下哪種狀態(tài)?C
A、就緒狀態(tài)B、運(yùn)行狀態(tài)
C、阻塞狀態(tài)D、死亡狀態(tài)
8、在以下哪種情況下,線程進(jìn)入就緒狀態(tài)?D
A、線程調(diào)用了sleep()方法時B、線程調(diào)用了join()方法(終止)
C、線程調(diào)用了yield()方法時D、線程調(diào)用了notify()方法??
9 51、、下面四個選項(xiàng)中,對線程同步的目的描述正確的有哪些?(多選)AD(AB)
A、鎖定資源,使同一時刻只有一個線程去訪問它,防止多個線程操作同一個資源引發(fā)錯誤
B、提高線程的執(zhí)行效率
C、讓線程獨(dú)占一個資源
D、讓多個線程同時使用一個資源
10、對于wait()方法,下面說法正確的就是?(多選)ABCD
A、wait()方法的調(diào)用者就是同步鎖對象
B、wait()方法使線程進(jìn)入等待狀態(tài)
C、調(diào)用同一鎖對象的notify()或notifyAll()方法可以喚醒調(diào)用wait()方法等待的線程
D、調(diào)用wait()方法的線程會釋放同步鎖對象
四、程序分析題
閱讀下面的程序,分析代碼 52、就是否能編譯通過,如果能編譯通過,請列出運(yùn)行的結(jié)果。如果不能編譯通過
請說明原因。
1、代碼一:不能,RunHandler沒有繼承Thread,不能用Thread創(chuàng)建對象(程序不能編譯通過,因?yàn)?
RunHandler類沒有實(shí)現(xiàn)Runnable接口,因此RunHandler的實(shí)例對象不能作為參數(shù)傳遞給Thread的構(gòu)造方
法。)
classRunHandler{publicvoidrun(){System、out、println("run");
}}publicclassTest{publicstaticvoidmain(String[]args){
Threadt=newThre 53、ad(newRunHandler());t、start();
}}
2、代碼二:thisisrun(程序不能編譯通過,因?yàn)門hread的子類A重寫的run()方法的訪問級別不能低于父類run()方法的。訪問級別)
publicclassAextendsThread{protectedvoidrun(){System、out、println("thisisrun()");}
publicstaticvoidmain(String口args){Aa=newA();
a、start();
}}
3、代碼三:Exception(程序不能編譯通過,因?yàn)橥椒椒ㄖ姓{(diào)用wait()方法的對象必 54、須為同步鎖對象)
publicclassTest{
privateObjectobj=newObject();
publicsynchronizedvoida(){try{
obj、wait();改this、wait()System、out、println("waiting");
《Java基礎(chǔ)入門》課后習(xí)題及答案
}catch(InterruptedExceptione){System、out、println("Exception");
}}publicstaticvoidmain(String口args){
newTest()、a();}
}
4、為了使下面的程序能 55、夠輸出"Threadisrunning”,請?jiān)谠诳崭裉幪钌舷鄳?yīng)的代碼。publicclassBimplementsRunnable{
publicstaticvoidmain(String口args){
Threadt=newThread(newB());
__t、start()//此處填空
}publicvoidrun(){
System、out、println("Threadisrunning");}publicvoidgo(){
start(1);
}publicvoidstart(inti){}
}
五、簡答題
1、java中有幾種方法可以實(shí)現(xiàn)一個線程?請舉例說明。 56、
一種就是繼承java、lang包下的Thread類履寫Thread類的run()方法,在run()方法中實(shí)現(xiàn)運(yùn)行在線程
上的代碼。
newThread(){
publicvoidrun(){}
}、start();
另一種就就是實(shí)現(xiàn)java、lang、Runnable接口,同樣就是在run()方法中實(shí)現(xiàn)運(yùn)行在線程上的代碼。
newThread(newRunnable(){
publicvoidrun(){}
})、start()
2、sleep()與 wait()有什么區(qū)別
《Java基礎(chǔ)入門》課后習(xí)題及答案
調(diào)用sleep()方法,正在執(zhí)行的線程主動讓出CP 57、U去執(zhí)行其她線程,在sleep()方法指定的時間過后,CPU才會
回到這個線程上繼續(xù)往下執(zhí)行,如果當(dāng)前線程進(jìn)入了同步鎖,sleep()方法并不會釋放鎖,即使當(dāng)前線程使用
sleep()方法讓出了CPU,但其它被同步鎖擋住了的線程也無法得到執(zhí)行。wait()在一個已經(jīng)進(jìn)入了同步鎖的
線程內(nèi)進(jìn)行調(diào)用,讓當(dāng)前線程暫時讓出同步鎖,以便其它正在等待此鎖的線程可以得到同步鎖并運(yùn)行。當(dāng)其
它線程調(diào)用了notify()方法后,調(diào)用wait()方法的線程就會解除wait狀態(tài),當(dāng)再次獲得同步鎖后,程序可以繼續(xù)
向下執(zhí)行。
六、編程題
請按照題目的要求編寫程序并給出運(yùn)行結(jié)果。
1、通過繼承Threa 58、d類的方式創(chuàng)建兩個線程,在Thread構(gòu)造方法中指定線程的名字,并將這兩個線程的
名字打印出來。
2、通過實(shí)現(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é)果相加。
第6章JavaAPI
一、填空題
1、在Java中定義了兩個類來封裝對字符串的操作,它們分別就是String_與_StringBuffer。
2 59、、Java中的操作日期的類有_Date___、_Calendar___、DateFormat等。
3、在程序中若想取得一個Runtime實(shí)例,則可以調(diào)用Runtime類的靜態(tài)方法getRnutime()。
4、Math類中用于計(jì)算所傳遞參數(shù)平方根的方法就是_sqrt()。
5、Java中專門用于將日期格式化為字符串的類就是_DateFormat。
6、Math類中有兩個靜態(tài)常量PI與E,分別代表數(shù)學(xué)常量_兀___與_e―。
7、Java中的用于產(chǎn)生隨機(jī)數(shù)的類就是_Random,它位于java、util包中。
8、String類中用于返回字符串字符個數(shù)的方法就是_length()。
60、
9、System類中所提供的屬性與方法都就是—靜態(tài)—的,想要引用這些屬性與方法,直接使用System類
調(diào)用即可。
10、已知sb為StringBuffer的一個實(shí)例,且sb、toString()的值為"abcde",則執(zhí)行sb、reverse。后,sb、toString()的值為_"edcba_"。
二、判斷題
1、String對象與StringBuffer對象都就是字符串變量,創(chuàng)建后都可以修改。錯
2、用運(yùn)算符“==”比較字符串對象時,如果兩個字符串的值相同,結(jié)果為true。錯
3、System類中的currentTimeMillis()方法返回一個long類型的值。對
4 61、、Date、Calendar以及DateFormat類都位于java、util包中。錯分別java、util、Datejava、util、Calendar
java、text、DateFormat
5、String類的方法replace(CharSequencesrt1,CharSequencesrt2)返回一個新的字符串,它就是通過用srt2替換此字符串中出現(xiàn)的所有srt1得到的。對
三、選擇題。
1、先閱讀下面的程序片段:C
Stringstr="abccdefcdh";
String[]arr=str、split("c");
System、out、println(arr、l 62、ength);
程序執(zhí)行后,打印的結(jié)果就是幾?
A、2個B、3個C、4個D、5個
2、以下都就是Math類的常用方法,其中用于計(jì)算絕對值的方法就是哪個?
A、ceil()B、floor()C、abs()D、random。
3、Random對象能夠生成以下哪種類型的隨機(jī)數(shù)?D
A、intB、stringC、doubleD、A與C
4、Strings="abcdedcba";則s、substring(3,4)返回的字符串就是以下選項(xiàng)中的哪個?C
A、cdB、deC、dD、e
5、假若indexOf()方法未能找到所指定的子字符串,則返回以下選項(xiàng)中的哪個?C
A、falseB、0 63、C、-1D、以上答案都不對
6、要產(chǎn)生[20,999]之間的隨機(jī)整數(shù)可以使用以下哪個表達(dá)式?B
A.(int)(20+Math、random()*97)
B、20+(int)(Math、random()*980)
C、(int)Math、random()*999
D、20+(int)Math、random()*980
7、以下Math類的方法中,-4、4通過哪個方法運(yùn)算后,結(jié)果為-5、0?D(C)
A、round()四舍五入B、min()C、floor()小于參數(shù)最大整數(shù)D、ceil()大于參數(shù)最
小整數(shù)
8、下面的程序段執(zhí)行后,輸出的結(jié)果就是以下哪個選項(xiàng)?A
String 64、Bufferbuf=newStringBuffer("Beijing2008");
buf、insert(7,"@");
System、out、println(buf、toString());
A、Beijing@2008B、@Beijing2008C、Beijing2008@D、Beijing#2008
9、閱讀下面的程序:A
publicclasstest{
publicstaticvoidmain(Stringargs[]){
inti;
floatf=2、3f;
doubled=2、7;
i=((int)Math、ceil(f))*((int)Math、round( 65、d));
System、out、println(i);}}
程序執(zhí)行后,運(yùn)行結(jié)果為以下哪個選項(xiàng)?
A、9B、5C、6D、6、1
10、先閱讀下面的程序片段:B
Stringstr1=newString("java");
Stringstr2=newString("java");
StringBufferstr3=newStringBuffer("java");
對于上述定義的變量,以下表達(dá)式的值為true的就是哪個?
A、str1==str2;B、str1>equals(str2);C、str1==str3;D、以上都不對四、程序分析題。
閱讀下面的程序,分析代碼就是否能編 66、譯通過,如果能編譯通過,請列出運(yùn)行的結(jié)果。如果不能編譯通過,請說明原因。
代碼一:5
7、0
-8、0
-5
8、1
-6、1
publicclassA{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():15
str、charAt(0):d
lastIndexOf(m):"10
substring(2,4):fe
indexOf(g):5
publicclassB{
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中西方家庭教育的對比ppt課件
- 《運(yùn)籌學(xué)教程》第五版運(yùn)籌學(xué)6對策論矩陣對策課件
- (部編版)統(tǒng)編版四年級語文下冊第2課《鄉(xiāng)下人家》ppt課件
- 全等三角形1--公開課一等獎ppt課件
- 《會跳舞樹葉娃娃》課件
- 9兒童詩兩首_人教版五年級的語文下冊課件
- 綠色植物是食物之源(我的課件)0
- 河南專版2022春八年級語文下冊第四單元16慶祝奧林匹克運(yùn)動復(fù)興25周年習(xí)題課件新人教版
- 全國xx杯說課大賽機(jī)械類一等獎作品:鉗工車模的制作說課ppt課件
- 六年級下冊數(shù)學(xué)ppt課件-總復(fù)習(xí)(1)數(shù)的認(rèn)識-整數(shù)∣北師大版
- 牛頓第二定律優(yōu)秀完整公開課ppt課件
- 調(diào)脂與卒中防治課件
- 點(diǎn)到平面的距離課件
- 聚焦新醫(yī)改形勢下的醫(yī)院發(fā)展戰(zhàn)略
- 四肢血管超聲基礎(chǔ)