《Java基礎(chǔ)入門》課后習(xí)題與答案
《《Java基礎(chǔ)入門》課后習(xí)題與答案》由會(huì)員分享,可在線閱讀,更多相關(guān)《《Java基礎(chǔ)入門》課后習(xí)題與答案(55頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、《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兩個(gè)可執(zhí)行程序存放在JDK安裝目錄的bin______目錄下。 5、path______環(huán)境變量用來存儲(chǔ)Java的編譯和運(yùn)行工具所在的路徑,而_classpath_____環(huán)境變量則用來保存保存Java虛擬機(jī)要運(yùn)行的".class"文件路徑。 二、選擇題
2、 1、以下選項(xiàng)中,哪些屬于JDK工具?〔多選ABCD A、Java編譯器 B、Java運(yùn)行工具 C、Java文檔生成工具 D、Java打包工具 2、Java屬于以下哪種語言?C A、機(jī)器語言 B、 匯編語言 C、高級(jí)語言 D、以上都不對(duì) 3、下面哪種類型的文件可以在Java虛擬機(jī)中運(yùn)行?D A、.java B、.jre C、.exe D、.class 4、安裝好JDK后,在其bin目錄下有許多exe可執(zhí)行文件,其中java.exe命令的作用是以下哪一種??B A、Java文檔制作工具 B、Java解釋器?? C、Jav
3、a編譯器??????D、Java啟動(dòng)器? 5、如果jdk的安裝路徑為:d:\jdk,若想在命令窗口中任何當(dāng)前路徑下,都可以直接使用javac和java命令,需要將環(huán)境變量path設(shè)置為以下哪個(gè)選項(xiàng)?B A.d:\jdk;????????B.d?:\jdk\bin;????C.d:\jre\bin;???????D.d:\jre; 三、問答題 1、簡述Java的特點(diǎn)。 面向?qū)ο?、跨平臺(tái)性、健壯性、安全性、可移植性、多線程性、動(dòng)態(tài)性等。 2、簡述JRE與JDK的區(qū)別。 JRE〔Java Runtime Environment,Java運(yùn)行時(shí)環(huán)境,它相當(dāng)于操作系統(tǒng)部分,提供了J
4、ava程序運(yùn)行時(shí)所需要的基本條件和許多Java基礎(chǔ)類,例如,IO類、GUI控件類、網(wǎng)絡(luò)類等。JRE是提供給普通用戶使用的,如果你只想運(yùn)行別人開發(fā)好的Java程序,那么,你的計(jì)算機(jī)上必須且只需安裝JRE。 JDK〔Java Development Kit,Java開發(fā)工具包,它包含編譯工具、解釋工具、文檔制作工具、打包工具多種與開發(fā)相關(guān)的工具,是提供給Java開發(fā)人員使用的。初學(xué)者學(xué)習(xí)和使用Java語言時(shí),首先必須下載和安裝JDK。JDK中已經(jīng)包含了JRE部分,初學(xué)者安裝JDK后不必再去下載和安裝JRE了。 JDK〔Java Development Kit,Java開發(fā)
5、工具包,它包含編譯工具、解釋工具、文檔制作工具、打包工具多種與開發(fā)相關(guān)的工具,是提供給Java開發(fā)人員使用的。初學(xué)者學(xué)習(xí)和使用Java語言時(shí),首先必須下載和安裝JDK。JDK中已經(jīng)包含了JRE部分,初學(xué)者安裝JDK后不必再去下載和安裝JRE了。
四、編程題
使用記事本編寫一個(gè)HelloWorld程序,在dos命令行窗口編譯運(yùn)行。請(qǐng)按照題目的要求編寫程序并給出運(yùn)行結(jié)果。
public class HelloWorld {
public static void main
6、} } 第2章 Java編程基礎(chǔ) 一、填空題 1、Java中的程序代碼都必須在一個(gè)類中定義,類使用__class____關(guān)鍵字來定義。 2、布爾常量即布爾類型的兩個(gè)值,分別是_true_____和_flase_____。 3、Java中的注釋可分為三種類型,分別是_單行注釋//__、__多行注釋_/* */__、文檔/注釋** */______。 4、Java中的變量可分為兩種數(shù)據(jù)類型,分別是_基本數(shù)據(jù)類型_____和_引用數(shù)據(jù)類型_____。 5、在Java中,byte類型數(shù)據(jù)占____1__個(gè)字節(jié),short類型數(shù)據(jù)占__2____個(gè)字節(jié),int類型數(shù)據(jù)占___4_
7、__個(gè)字節(jié),long類型數(shù)據(jù)占____8__個(gè)字節(jié)。 6、在邏輯運(yùn)算符中,運(yùn)算符___&___和___&&___用于表示邏輯與,__|____和__||____表示邏輯或。 7、若x = 2,則表達(dá)式 < x + + >/3 的值是__0___。 8、若int a =2; a+=3;執(zhí)行后,變量a的值為__5____。 9、若int []a={12,45,34,46,23}; ,則a[2]= __34____。 10、若int a[3][2]={{123,345},{34,56},{34,56}},則a[2][1]= __56____。 二、判斷題 1、Java語言不區(qū)分大小寫。
8、錯(cuò) 2、0xC5表示的是一個(gè)十六進(jìn)制整數(shù)。對(duì) 3、continue 語句只用于循環(huán)語句中,它的作用是跳出循環(huán)。錯(cuò) 4、"/*…*/"中可以嵌套"http://"注釋,但不能嵌套"/*…*/"注釋。對(duì) 5、-5%3的運(yùn)算結(jié)果是2。錯(cuò) 三、選擇題 1、以下選項(xiàng)中,哪些屬于合法的標(biāo)識(shí)符?〔多選AD A、Hello_World B、class C、123username D、username123 2、關(guān)于方法重載的描述,以下選項(xiàng)中哪些是正確的?〔多選〔ADABD A、方法名必須一致 B、返回值類型必須不同 C、參數(shù)個(gè)數(shù)必須一致 D、
9、參數(shù)的個(gè)數(shù)或類型不一致 3、以下關(guān)于變量的說法錯(cuò)誤的是?C A、變量名必須是一個(gè)有效的標(biāo)識(shí)符 B、變量在定義時(shí)可以沒有初始值 C、變量一旦被定義,在程序中的任何位置都可以被訪問 D、在程序中,可以將一個(gè)byte類型的值賦給一個(gè)int類型的變量,不需要特殊聲明 4、以下選項(xiàng)中,switch語句判斷條件可以接收的數(shù)據(jù)類型有哪些?〔多選 ABCD A、intB、byteC、charD、short 5、假設(shè)int x = 2,三元表達(dá)式 x>0?x+1:5 的運(yùn)行結(jié)果是以下哪一個(gè)?C A、0 B、2 C、3 D、5 6、下面的運(yùn)算符中,用于執(zhí)行除法運(yùn)算是哪個(gè)
10、?A A、/ B、\ C、% D、* 7、下列語句哪些屬于循環(huán)語句?〔多選AC A、for語句 B、if語句 C、while語句 D、switch語句 8、下面哪種寫法可以實(shí)現(xiàn)訪問數(shù)組arr的第1個(gè)元素?A A、arr[0] B、arr<0> C、arr[1] D、arr<1> 9、以下哪個(gè)選項(xiàng)可以正確創(chuàng)建一個(gè)長度為3的二維數(shù)組?C A、 new int [2][3]; B、 new int[3][]; C、 new int[][3]; D、 以上答案
11、皆不對(duì)
10、請(qǐng)先閱讀下面的代碼。
int x = 1;
int y = 2;
if
12、t類型的值,因此編譯不通過>
public class Test01 {
public static void main
13、= 96;
System.out.println<"x is " + x>;
System.out.println<"y is " + y>;
}
y = x;
System.out.println<"x is " + x>;
}
}
代碼三:3 因?yàn)闆]有break,,所以4以后都執(zhí)行
public class Test03 {
public static void main
14、
case 2:
j++;
case 3:
j++;
case 4:
j++;
case 5:
j++;
default:
j++;
}
System.out.println
15、 五、簡答題 1、請(qǐng)列舉Java語言中的八種基本數(shù)據(jù)類型,并說明每種數(shù)據(jù)類型所占用的空間大小。 Java語言的八種基本數(shù)據(jù)類型有:byte字節(jié)型,占一個(gè)字節(jié)。short短整型,占兩個(gè)字節(jié)。int整型,占4個(gè)字節(jié)。long長整型,占8個(gè)字節(jié)。float單精度浮點(diǎn)型,占4個(gè)字節(jié)。double雙精度浮點(diǎn)型,占8個(gè)字節(jié)。char字符型,占兩個(gè)字節(jié)。boolean型,表示邏輯值,有true和false兩個(gè)值,分別占一個(gè)字節(jié)。 2、 簡述&&與&的區(qū)別并舉例說明。 如果使用"&"在表達(dá)式之間進(jìn)行連接,那么無論任何情況,"&"兩邊的表達(dá)式都會(huì)參與計(jì)算。如果使用"&&"進(jìn)行連接,當(dāng)"&&"左邊的
16、表達(dá)式為false,則不會(huì)執(zhí)行其右邊的表達(dá)式。例如定義int x = 2,y = 0; boolean b = x < y & x / 2 > 0表達(dá)是會(huì)發(fā)生被0除異常,因?yàn)閤 / y的表達(dá)式執(zhí)行了。而boolean b = x < y & x / 2 > 0是不會(huì)出現(xiàn)這種異常的,因?yàn)閤 < y為false,表達(dá)式x / y不會(huì)執(zhí)行 3、 什么是方法重載? 方法重載指的是在一個(gè)類中可以聲明多個(gè)同名的方法,而方法中參數(shù)的個(gè)數(shù)或者數(shù)據(jù)類型不一致。調(diào)用這些同名的方法時(shí),JVM會(huì)根據(jù)實(shí)際參數(shù)的不同綁定到不同的方法。 六、編程題 請(qǐng)按照題目的要求編寫程序并給出運(yùn)行結(jié)果。 1、請(qǐng)編寫程序,實(shí)
17、現(xiàn)計(jì)算"1+3+5+7+…+99"的值。 提示: 1) 使用循環(huán)語句實(shí)現(xiàn)自然數(shù)1~99的遍歷。 2) 在遍歷過程中,通過條件判斷當(dāng)前遍歷的數(shù)是否為奇數(shù),如果是就累加,否則不加。 2、已知函數(shù) x + 3 < x > 0 > y = 0 < x = 0 > x2–1 < x < 0 > 請(qǐng)?jiān)O(shè)計(jì)一個(gè)方法實(shí)現(xiàn)上面的函數(shù),根據(jù)傳入的值x的不同,返回對(duì)應(yīng)的y值。 提示: 1) 定義一個(gè)static修飾符修飾的方法,方法接收一個(gè)int類型
18、的參數(shù)x,返回值為int類型。 2) 在方法中使用if…else if..else 語句針對(duì)x的值進(jìn)行三種情況的判斷。 3) 根據(jù)判斷結(jié)果分別執(zhí)行不同的表達(dá)式,并將結(jié)果賦予變量y。 4) 在方法的最后返回y的值。 5) 在main方法中調(diào)用設(shè)計(jì)好的方法,傳入一個(gè)int型的值,將方法的返回值打印。 3、請(qǐng)編寫程序,實(shí)現(xiàn)對(duì)數(shù)組{25,24,12,76,101,96,28} 的排序。 提示:使用冒泡排序算法。 第3章 面向?qū)ο蟆采? 一、填空題 1、 面向?qū)ο蟮娜筇卣魇欠庋b性_、_繼承性_____和__多態(tài)性____。 2、 在Java中,可以使用關(guān)鍵字__ne
19、w____來創(chuàng)建類的實(shí)例對(duì)象。 3、 定義在類中的變量被稱為__成員變量____,定義在方法中的變量被稱為局部變量______ 4、 面向?qū)ο蟪绦蛟O(shè)計(jì)的重點(diǎn)是_類___的設(shè)計(jì),__類____是用來創(chuàng)建對(duì)象的模板。 5、 在非靜態(tài)成員方法中,可以使用關(guān)鍵字_this__訪問類的其它非靜態(tài)成員。 6、 當(dāng)一個(gè)對(duì)象被當(dāng)成垃圾從內(nèi)存中釋放時(shí),它的__finalize<>____方法會(huì)被自動(dòng)調(diào)用。 7、 被static關(guān)鍵字修飾的成員變量被稱為_靜態(tài)變量_,它可以被該類所有的實(shí)例對(duì)象共享。 8、 在一個(gè)類中,除了可以定義屬性、方法,還可以定義類,這樣的類被稱為_內(nèi)部類_____。 9、在J
20、ava中,提供了一個(gè)_javadoc_____命令,用于將程序中的文檔注釋提取出來,生成HTML格式的幫助文檔。 10、所謂類的封裝是指在定義一個(gè)類時(shí),將類中的屬性私有化,即使用_private_____關(guān)鍵字來修飾。 二、判斷題 1、在定義一個(gè)類的時(shí)候,如果類的成員被private所修飾,該成員不能在類的外部被直接訪問。對(duì) 2、Java中的每個(gè)類都至少有一個(gè)構(gòu)造方法,一個(gè)類中如果沒有定義構(gòu)造方法,系統(tǒng)會(huì)自動(dòng)為這個(gè)類創(chuàng)建一個(gè)默認(rèn)的構(gòu)造方法。對(duì) 3、聲明構(gòu)造方法時(shí),不能使用private關(guān)鍵字修飾。錯(cuò) 4、類中static修飾的變量或方法,可以使用類名或?qū)ο蟮囊米兞吭L問。對(duì) 5、
21、方法內(nèi)部類中不能訪問外部類的成員變量。錯(cuò) 三、選擇題 1、類的定義必須包含在以下哪種符號(hào)之間?B A、方括號(hào)[] B、花括號(hào){} C、雙引號(hào)"" D、圓括號(hào)<> 2、下面哪一個(gè)是正確的類的聲明? D A、 public void HH{…} B、 public class Move<>{…} C、 public class void number{} D、 public class Car{…} 3、在以下什么情況下,構(gòu)造方法會(huì)被調(diào)用?B A、 類定義時(shí) B、 創(chuàng)建對(duì)象時(shí)
22、 C、 調(diào)用對(duì)象方法時(shí) D、 使用對(duì)象的變量時(shí) 4、下面對(duì)于構(gòu)造方法的描述,正確有哪些?<多選>ABC A、方法名必須和類名相同 B、方法名的前面沒有返回值類型的聲明 C、在方法中不能使用return語句返回一個(gè)值 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è)類的兩個(gè)構(gòu)造方
23、法中使用this互相調(diào)用
6、下面哪些可以使用static關(guān)鍵字修飾?<多選>AC
24、、在內(nèi)部創(chuàng)建一個(gè)該類的實(shí)例對(duì)象,使用靜態(tài)變量引用該實(shí)例對(duì)象
C、使用private修飾靜態(tài)變量,禁止外界直接訪問
D、定義靜態(tài)方法返回該類實(shí)例
9、 請(qǐng)先閱讀下面的代碼D
public class Test {
public Test<>{
System.out.println<"構(gòu)造方法一被調(diào)用了">;
}
public Test
25、<1>;
System.out.println<"構(gòu)造方法三被調(diào)用了">;
}
public static void main
26、w Inner<> B、Inner in = new Outer.Inner<>; C、 Outer.Inner in = new Outer.Inner<>; D、Outer.Inner in = new Outer<>.new Inner<>; 四、程序分析題 閱讀下面的程序,分析代碼是否能夠編譯通過,如果能編譯通過,請(qǐng)列出運(yùn)行的結(jié)果。否則請(qǐng)說明編譯失敗的原因。 代碼一:不能,secret是私有成員,只能類內(nèi)部訪問<程序不能編譯通過,因?yàn)樵陬怉中的成員變量secret用private修飾,所以在類Test1中無法訪問> class A { pr
27、ivate int secret = 5;
}
public class Test1 {
public static void main
28、.println
29、ut.println
30、設(shè)計(jì)模式具備哪些特點(diǎn)? 單例模式可以保證在整個(gè)程序運(yùn)行期間針對(duì)該類只存在一個(gè)實(shí)例對(duì)象。 六、編程題 1、請(qǐng)按照以下要求設(shè)計(jì)一個(gè)學(xué)生類Student,并進(jìn)行測試。 要求如下: 1Student類中包含姓名、成績兩個(gè)屬性 2分別給這兩個(gè)屬性定義兩個(gè)方法,一個(gè)方法用于設(shè)置值,另一個(gè)方法用于獲取值. 3Student類中定義一個(gè)無參的構(gòu)造方法和一個(gè)接收兩個(gè)參數(shù)的構(gòu)造方法,兩個(gè)參數(shù)分別為姓名和成績屬性賦值 4在測試類中創(chuàng)建兩個(gè)Student對(duì)象,一個(gè)使用無參的構(gòu)造方法,然后調(diào)用方法給姓名和成績賦值,一個(gè)使用有參的構(gòu)造方法,在構(gòu)造方法中給姓名和成績賦值 2、定義一個(gè)Father和Ch
31、ild類,并進(jìn)行測試。 要求如下: 1Father類為外部類,類中定義一個(gè)私有的String類型的屬性name,name的值為"zhangjun"。 2Child類為Father類的內(nèi)部類,其中定義一個(gè)introFather<>方法,方法中調(diào)用Father類的name屬性。 3定義一個(gè)測試類Test,在Test類的main<>方法中,創(chuàng)建Child對(duì)象,并調(diào)用introFather <>方法。 第4章 面向?qū)ο蟆蚕? 一、填空題 1、在Java語言中,允許使用已存在的類作為基礎(chǔ)創(chuàng)建新的類,這種技術(shù)我們稱為繼承______。 2、一個(gè)類如果實(shí)現(xiàn)一個(gè)接口,那么它就需要實(shí)現(xiàn)接口中定義
32、的全部_方法_____,否則該類就必須定義成_抽象類_____。 3、在程序開發(fā)中,要想將一個(gè)包中的類導(dǎo)入到當(dāng)前程序中,可以使用_import_____關(guān)鍵字。 4、一個(gè)類可以從其它的類派生出來,派生出來的類稱為_子類_____,用于派生的類稱為_基類_____或者_(dá)_父類____。 5、 JDK中定義了大量的異常類,這些類都是_Exception_____類的子類或者間接子類。 6、定義一個(gè)Java類時(shí),如果前面加使用_final_____關(guān)鍵字修飾,那么該類不可以被繼承。 7、如果子類想使用父類中的成員,可以通過關(guān)鍵字__super____引用父類的成員。 8、在Java語言中
33、,所有的類都直接或間接繼承自_Object_____類。 9、異常的捕獲通常由try、catch兩部分組成,_try_____代碼塊用來存放可能發(fā)生異常,_catch_____代碼塊用 來處理產(chǎn)生的異常。 10、在Java語言中,要想是將一個(gè)已編譯的類打包成jar文件,可以使用的命令是_jar-cvf_____,要想在命令行窗口運(yùn)行jar文件,可以使用的命令是__java-jar___。 二、判斷題 1、抽象方法必須定義在抽象類中,所以抽象類中的方法都是抽象方法。錯(cuò) 2、Java中被final關(guān)鍵字修飾的變量,不能被重新賦值。對(duì) 3、不存在繼承關(guān)系的情況下,也可以實(shí)現(xiàn)方法重寫。錯(cuò)
34、 4、package聲明語句應(yīng)當(dāng)為Java源文件中的第一條語句。對(duì) 5、接口中只能定義常量和抽象方法。錯(cuò)<對(duì)> 三、選擇題 1、在類的繼承關(guān)系中,需要遵循以下哪個(gè)繼承原則?B A、多重 B、單一 C、雙重 D、不能繼承 2、在Java語言中,以下哪個(gè)關(guān)鍵字用于在方法上聲明拋出異常?C A.tryB.catchC.throws D.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不
35、能同時(shí)存在于同一個(gè)構(gòu)造方法中 D、super與this可以同時(shí)存在于同一個(gè)構(gòu)造方法中 4、以下說法哪些是正確的?〔多選ABCD A、Java語言中允許一個(gè)類實(shí)現(xiàn)多個(gè)接口 B、Java語言中不允許一個(gè)類繼承多個(gè)類 C、Java語言中允許一個(gè)類同時(shí)繼承一個(gè)類并實(shí)現(xiàn)一個(gè)接口 D、Java語言中允許一個(gè)接口繼承一個(gè)接口 5、類中的一個(gè)成員方法被下面哪個(gè)修飾符修飾,該方法只能在本類被訪問?C A、public B、 protected C、 private D、default 6、關(guān)于抽象類的說法哪些是正確的?〔多選AC A、抽象類中可以有非抽象方
36、法。 B、如果父類是抽象類,則子類必須重寫父類所有的抽象方法。 C、不能用抽象類去創(chuàng)建對(duì)象。 D、接口和抽象類是同一個(gè)概念。 7、在Java中,要想讓一個(gè)類繼承另一個(gè)類,可以使用以下哪個(gè)關(guān)鍵字?C A、inherits B、implements C、extends D、modifies 8、System類位于以下哪個(gè)包中?D A、java.io B、java.util C、java.awt D、java.lang 9、已知類的繼承關(guān)系如下: A class Employee; class Manager extends Employ
37、ee;
class Director extends Employee;
則以下語句能通過編譯的有哪些?
A、 Employee e=new Manager<>; B、 Director d=new Manager<>;
C、 Director d=new Employee<>; D、Manager m=new Director<>;
10、編譯運(yùn)行下面的程序,結(jié)果是什么?B
public class A {
public static void main
38、 } void test<> { System.out.print<"A">; } } class B extends A { void test<> { super.test<>; System.out.print<"B">; } } A、產(chǎn)生編譯錯(cuò)誤 B、代碼可以編譯運(yùn)行,并輸出結(jié)果AB C、代碼可以編譯運(yùn)行,但沒有輸出 D、編譯沒有錯(cuò)誤,但會(huì)產(chǎn)生運(yùn)行時(shí)異常 四、分析題 閱讀下面的程序,分析代碼是否能編譯通過,如果能編譯通過,請(qǐng)列出運(yùn)行的結(jié)果。如果不能編譯通過,請(qǐng)說明原因。 代碼
39、一:進(jìn)入catch代碼塊
進(jìn)入finally代碼塊<程序編譯能通過,這是因?yàn)閕nt x = 2 / 0; System.out.println
40、 System.out.println<"進(jìn)入catch代碼塊">; } finally { System.out.println<"進(jìn)入finally代碼塊">; } } } 代碼二:不能,final修飾shout,不能被重寫<程序編譯不通過,這是因?yàn)樵诔绦蛑惺褂昧薴inal關(guān)鍵字修飾Animal類,使得Animal類不能被繼承。shout<>方法中同樣使用了final關(guān)鍵字,使得該方法不能被重寫。> final class Animal { public final void shout<> { // 程序代碼 } } class Do
41、g extends Animal {
public void shout<> {
// 程序代碼
}
}
class Test02 {
public static void main
42、
System.out.println<"汪汪……">;
}
}
public class Test03 {
public static void main
43、Animal {
void breathe<>;
void run<>;
void eat<>{};
}
class Dog implements Animal {
public void breathe<> {
System.out.println<"I’m breathing">
}
public void eat<> {
System.out.println<"I’m eathing">
}
}
public class test04 {
public static void main
44、{ Dog dog = new Dog<>; dog.breathe<>; dog.eat<>; } } 五、簡答題 1、什么是方法重寫? 在繼承關(guān)系中,子類的方法與父類的某一方法具有相同的方法名、返回類型和參數(shù)列表,則稱子類的該方法重寫<覆蓋>父類的方法。 2、什么是多態(tài)? 多態(tài)意味著一個(gè)對(duì)象有著多種形態(tài),可以在特定的情況下,表現(xiàn)不同的狀態(tài),從而對(duì)應(yīng)著不同的屬性和方法。簡單的說,多態(tài)就是使用父類類型的變量引用子類對(duì)象,根據(jù)被引用子類對(duì)象的特性,程序會(huì)得到不同的運(yùn)行效果。 3、抽象類和接口的區(qū)別? 在Java中
45、,使用abstract關(guān)鍵字修飾的類稱之為抽象類。抽象類是不能被實(shí)例化的,通常需要寫一個(gè)子類來繼承抽象類,同時(shí)實(shí)例化子類來獲得該類的對(duì)象。抽象類通常用于表示一種抽象的概念。 接口可以說是一種特殊的抽象類,接口中只能定義常量和抽象方法。由于接口的特殊性,在定義時(shí)需要使用interface關(guān)鍵字。 六、編程題 請(qǐng)按照題目的要求編寫程序并給出運(yùn)行結(jié)果。 1、 設(shè)計(jì)一個(gè)學(xué)生類Student和它的一個(gè)子類Undergraduate,要求如下: 1) Student類有name<姓名>、和age<年齡>屬性,一個(gè)包含兩個(gè)參數(shù)的構(gòu)造方法,用于給name和age屬性賦值,一個(gè)show<>方法打印St
46、udent的屬性信息 2) 本科生類Undergraduate增加一個(gè)degree<學(xué)位>屬性。有一個(gè)包含三個(gè)參數(shù)的構(gòu)造方法,前兩個(gè)參數(shù)用于給繼承的name和age屬性賦值,第三個(gè)參數(shù)給degree專業(yè)賦值,一個(gè)show<>方法用于打印Undergraduate的屬性信息 3) 在測試類中分別創(chuàng)建Student對(duì)象和Undergraduate對(duì)象,調(diào)用它們的show<>。 2、設(shè)計(jì)一個(gè)Shape接口和它的兩個(gè)實(shí)現(xiàn)類Square和Circle,要求如下: 1Shape接口中有一個(gè)抽象方法area<>,方法接收有一個(gè)double類型的參數(shù),返回一個(gè)double類型的結(jié)果 2Square和
47、Circle中實(shí)現(xiàn)了Shape接口的area<>抽象方法,分別求正方形和圓形的面積并返回
在測試類中創(chuàng)建Square和Circle對(duì)象,計(jì)算邊長為2的正方形面積和半徑為3的圓形面積
3、自定義一個(gè)異常類NoThisSoundException和Player類,在Player的play<>方法中使用自定義異常,要求入下:
1) NoThisSongException繼承Exception類,類中有一個(gè)無參和一個(gè)接收一個(gè)String類型參數(shù)的構(gòu)造方法,構(gòu)造方法中都使用super關(guān)鍵字調(diào)用父類的構(gòu)造方法。
2) Player類中定義一個(gè)play
48、型的參數(shù),表示播放歌曲的索引,當(dāng)index>10時(shí),paly<>方法用throw關(guān)鍵字拋出NoThisSongException異常,創(chuàng)建異常對(duì)象時(shí),調(diào)用有參的構(gòu)造方法,傳入"您播放的歌曲不存在"。 3) 在測試類中創(chuàng)建Player對(duì)象,并調(diào)用play<>方法測試自定義的NoThisSongException異常,使用try…catch語句捕獲異常,調(diào)用NoThisSongException的getMessage<>方法打印出異常信息。 第5章 多線程 一、填空題 1、一個(gè)應(yīng)用程序中有多條并發(fā)執(zhí)行的線索,每條線索都被稱作一個(gè)線程______,它們會(huì)交替執(zhí)行,彼此 間可以進(jìn)行_通
49、信_(tái)____。 2、在實(shí)現(xiàn)多線程的程序時(shí)有兩種方式,一是通過繼_Thread_____承類,二是通過實(shí)現(xiàn)Runnable______接口。 3、yield<>方法只能讓相同優(yōu)先級(jí)或者更高優(yōu)先級(jí)、處于_就緒_____狀態(tài)的線程獲得運(yùn)行的機(jī)會(huì)。 4、在Java語言中,同步方法需要用到關(guān)鍵字_synchronized_,對(duì)于同步方法而言無需指定同步鎖,它的同步 鎖是方法所在的_對(duì)象_____,也就是_this_____<關(guān)鍵字>。 5、在多任務(wù)系統(tǒng)中,每個(gè)獨(dú)立執(zhí)行的程序稱之為_線程_____,也就是"正在運(yùn)行的程序"。 6、線程的整個(gè)生命周期分為五個(gè)階段,分別是_新建_____、就緒__
50、____、_運(yùn)行_____、_阻塞_____、和死亡_____。
7、線程的優(yōu)先級(jí)用1~10之間的整數(shù)來表示,其中__10___代表優(yōu)先級(jí)最高,__1___代表優(yōu)先級(jí)最低。
8、在Thread類中,提供了一個(gè)start<>方法,該方法用于啟動(dòng)線程______,當(dāng)新線程啟動(dòng)后,系統(tǒng)會(huì)自動(dòng)調(diào)用__run<>____方法。
9、要想解決線程間的通信問題,可以使用__wait<>____、notify<>______、_notifyALL<>_____方法。
10、要將某個(gè)線程設(shè)置為后臺(tái)線程,需要調(diào)用該線程的_setDaemon
51、方法之前調(diào)用。 二、判斷題 1、當(dāng)我們創(chuàng)建一個(gè)線程對(duì)象時(shí),該對(duì)象表示的線程就立即開始運(yùn)行。錯(cuò) 2、如果前臺(tái)線程全部死亡,后臺(tái)線程也會(huì)自動(dòng)死亡。對(duì) 3、同步代碼塊中的鎖對(duì)象可以是任意類型的對(duì)象。對(duì) 4、靜態(tài)方法不能使用synchronized關(guān)鍵字來修飾。錯(cuò) 5、線程結(jié)束等待或者阻塞狀態(tài)后,會(huì)進(jìn)入運(yùn)行狀態(tài)。錯(cuò) 三、選擇題 1、Thread類位于下列哪個(gè)包中?B A、java.ioB、java.langC、java.utilD、java.awt 2、關(guān)于線程的創(chuàng)建過程,下面四種說法正確的有哪些?<多選>AC A、定義Thread類的子類,重寫Thread類的run<>方法,創(chuàng)
52、建該子類的實(shí)例對(duì)象,調(diào)用對(duì)象的start<>方法 B、定義Thread類的子類,重寫Thread類的run<>方法,創(chuàng)建該子類的實(shí)例對(duì)象,調(diào)用對(duì)象的run<>方法 C、定義一個(gè)實(shí)現(xiàn)Runnable 接口的類并實(shí)現(xiàn)run<>方法,創(chuàng)建該類實(shí)例對(duì)象,將其作為參數(shù)傳遞給Thread類的構(gòu)造方法來創(chuàng)建Thread對(duì)象,調(diào)用Thread對(duì)象的start<>方法 D、定義一個(gè)實(shí)現(xiàn)Runnable 接口的類并實(shí)現(xiàn)run<>方法,創(chuàng)建該類對(duì)象,然后調(diào)用run<>方法 3、對(duì)于通過實(shí)現(xiàn)Runnable接口創(chuàng)建線程,下面說法正確的有哪些?<多選>ABC A、適合多個(gè)相同程序代碼的線程去
53、處理同一個(gè)資源的情況
B、把線程同程序代碼、數(shù)據(jù)有效的分離,很好的體現(xiàn)了面向?qū)ο蟮脑O(shè)計(jì)思想
C、可以避免由于Java的單繼承帶來的局限性
D、編寫簡單,可以不通過Thread類直接創(chuàng)建線程
4、對(duì)于線程的生命周期,下面四種說法正確的有哪些?<多選> ABC
54、前仍可以像引用其它對(duì)象一樣引用它 D、線程進(jìn)入死亡狀態(tài)后,調(diào)用它的start<>方法仍然可以重新啟動(dòng) 5、對(duì)于死鎖的描述,下面四種說法正確有哪些?<多選>AB〔ABD A、當(dāng)兩個(gè)線程互相等待對(duì)方釋放同步鎖時(shí)會(huì)發(fā)生死鎖 B、Java虛擬機(jī)沒有檢測和處理死鎖的措施 C、一旦出現(xiàn)死鎖,程序會(huì)發(fā)生異常 D、處于死鎖狀態(tài)的線程處于阻塞狀態(tài),無法繼續(xù)運(yùn)行 6、下面四個(gè)選項(xiàng)中,哪些是線程進(jìn)入阻塞狀態(tài)的原因?<多選>ABC A、線程試圖獲取某個(gè)對(duì)象的同步鎖,而該鎖被其它線程持有 B、線程調(diào)用了另一個(gè)線程的join<>方法 C、當(dāng)線程調(diào)用了一個(gè)阻塞式的IO方法 D、
55、線程調(diào)用了setDaemon
56、引發(fā)錯(cuò)誤 B、提高線程的執(zhí)行效率 C、讓線程獨(dú)占一個(gè)資源 D、讓多個(gè)線程同時(shí)使用一個(gè)資源 10、對(duì)于wait<>方法,下面說法正確的是?<多選>ABCD A、wait<>方法的調(diào)用者是同步鎖對(duì)象 B、wait<>方法使線程進(jìn)入等待狀態(tài) C、調(diào)用同一鎖對(duì)象的notify<>或notifyAll<>方法可以喚醒調(diào)用wait<>方法等待的線程 D、調(diào)用wait<>方法的線程會(huì)釋放同步鎖對(duì)象 四、程序分析題 閱讀下面的程序,分析代碼是否能編譯通過,如果能編譯通過,請(qǐng)列出運(yùn)行的結(jié)果。如果不能編譯通過,請(qǐng)說明原因。 1.代碼一:不能,RunHa
57、ndler沒有繼承Thread,不能用Thread創(chuàng)建對(duì)象<程序不能編譯通過,因?yàn)镽unHandler類沒有實(shí)現(xiàn)Runnable接口,因此RunHandler的實(shí)例對(duì)象不能作為參數(shù)傳遞給Thread的構(gòu)造方法。>
class RunHandler {
public void run<>{
System.out.println<"run">;
}
}
public class Test {
public static void main
58、
t.start<>;
}
}
2.代碼二:this?is?run<程序不能編譯通過,因?yàn)門hread的子類A重寫的run<>方法的訪問級(jí)別不能低于父類run<>方法的。訪問級(jí)別>
public class A extends Thread{
protected void run<> {
System.out.println<"this?is?run<>">;
}
public static void main
59、碼三:Exception<程序不能編譯通過,因?yàn)橥椒椒ㄖ姓{(diào)用wait<>方法的對(duì)象必須為同步鎖對(duì)象>
public class Test{
private Object obj=new Object<>;
public synchronized void a<>{
try {
obj.wait<>;改this.wait<>
System.out.println<"waiting">;
} catch
60、 static void main
61、.out.println<"Thread is running">;
}
public void go<> {
start<1>;
}
public void start
62、是在run<>方法中實(shí)現(xiàn)運(yùn)行在線程上的代碼。
new Thread
63、同步鎖,以便其它正在等待此鎖的線程可以得到同步鎖并運(yùn)行。當(dāng)其它線程調(diào)用了notify<>方法后,調(diào)用wait<>方法的線程就會(huì)解除wait狀態(tài),當(dāng)再次獲得同步鎖后,程序可以繼續(xù)向下執(zhí)行。 六、編程題 請(qǐng)按照題目的要求編寫程序并給出運(yùn)行結(jié)果。 1、通過繼承Thread類的方式創(chuàng)建兩個(gè)線程,在Thread構(gòu)造方法中指定線程的名字,并將這兩個(gè)線程的名字打印出來。 2、通過實(shí)現(xiàn)Runnable接口的方式創(chuàng)建一個(gè)新線程,要求main線程打印100此次"main",新線程打印50次"new"。 3、模擬傳智播客的三個(gè)老師同時(shí)分發(fā)80份學(xué)習(xí)筆記,每個(gè)老師相當(dāng)于一個(gè)線程。 4、編寫10個(gè)線程,第一
64、個(gè)線程從1加到10,第二個(gè)線程從11加到20...第十個(gè)線程從91加到100,最后再把十個(gè)線程結(jié)果相加。 第6章 JavaAPI 一、填空題 1、在Java中定義了兩個(gè)類來封裝對(duì)字符串的操作,它們分別是String_和_StringBuffer____。 2、Java中的操作日期的類有_Date___、_Calendar___、DateFormat____等。 3、在程序中若想取得一個(gè)Runtime實(shí)例,則可以調(diào)用Runtime類的靜態(tài)方法getRnutime<>_____。 4、Math類中用于計(jì)算所傳遞參數(shù)平方根的方法是_sqrt<>____。 5、Java中專門用于將日期
65、格式化為字符串的類是_DateFormat____。 6、Math類中有兩個(gè)靜態(tài)常量PI和E,分別代表數(shù)學(xué)常量_π___和_e___。 7、Java中的用于產(chǎn)生隨機(jī)數(shù)的類是_Random___,它位于java.util____包中。 8、String類中用于返回字符串字符個(gè)數(shù)的方法是_length<>____。 9、System類中所提供的屬性和方法都是_靜態(tài)___的,想要引用這些屬性和方法,直接使用System類調(diào)用即可。 10、已知 sb為 StringBuffer 的一個(gè)實(shí)例,且 sb.toString<> 的值為 "abcde ",則執(zhí)行sb. reverse<>后,sb.t
66、oString<>的值為_"edcba_"___。
二、判斷題
1、String對(duì)象和StringBuffer對(duì)象都是字符串變量,創(chuàng)建后都可以修改。錯(cuò)
2、用運(yùn)算符"=="比較字符串對(duì)象時(shí),如果兩個(gè)字符串的值相同,結(jié)果為true。錯(cuò)
3、System類中的currentTimeMillis<>方法返回一個(gè)long類型的值。對(duì)
4、Date、Calendar以及DateFormat類都位于java.util包中。錯(cuò) 分別java.util.Date java.util.Calendar
java.text.DateFormat
5、String類的方法 replace
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中西方家庭教育的對(duì)比ppt課件
- 《運(yùn)籌學(xué)教程》第五版運(yùn)籌學(xué)6對(duì)策論矩陣對(duì)策課件
- (部編版)統(tǒng)編版四年級(jí)語文下冊(cè)第2課《鄉(xiāng)下人家》ppt課件
- 全等三角形1--公開課一等獎(jiǎng)ppt課件
- 《會(huì)跳舞樹葉娃娃》課件
- 9兒童詩兩首_人教版五年級(jí)的語文下冊(cè)課件
- 綠色植物是食物之源(我的課件)0
- 河南專版2022春八年級(jí)語文下冊(cè)第四單元16慶祝奧林匹克運(yùn)動(dòng)復(fù)興25周年習(xí)題課件新人教版
- 全國xx杯說課大賽機(jī)械類一等獎(jiǎng)作品:鉗工車模的制作說課ppt課件
- 六年級(jí)下冊(cè)數(shù)學(xué)ppt課件-總復(fù)習(xí)(1)數(shù)的認(rèn)識(shí)-整數(shù)∣北師大版
- 牛頓第二定律優(yōu)秀完整公開課ppt課件
- 調(diào)脂與卒中防治課件
- 點(diǎn)到平面的距離課件
- 聚焦新醫(yī)改形勢下的醫(yī)院發(fā)展戰(zhàn)略
- 四肢血管超聲基礎(chǔ)