《Java基礎(chǔ)入門(mén)》課后章節(jié)習(xí)題及答案
《《Java基礎(chǔ)入門(mén)》課后章節(jié)習(xí)題及答案》由會(huì)員分享,可在線閱讀,更多相關(guān)《《Java基礎(chǔ)入門(mén)》課后章節(jié)習(xí)題及答案(111頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、《Java基礎(chǔ)入門(mén)》課后章節(jié)習(xí)題及答案(完整版) 《Java基礎(chǔ)入門(mén)》課后習(xí)題 第1章Java開(kāi)發(fā)入門(mén) 一、填空題 1、 Java 的三大體系分另fj是 _JavaSE、 _JavaEE> _JavaME 。 2、Java程序的運(yùn)行環(huán)境簡(jiǎn)稱之為 JRE 3、編譯Java程序需要使用_javac 命令。 4、javac.exe和java.exe兩個(gè)可執(zhí)行程序存放在 JDK安裝目 錄的bin 目錄下。 5、path 環(huán)境變量用來(lái)存儲(chǔ) Java的編譯和運(yùn)行工具所在 的路徑,而_classpath 環(huán)境變量則用 來(lái)保存保存Java虛擬機(jī)要運(yùn)行的“ .class ”文件路徑。 二、選
2、擇題 1、以下選項(xiàng)中,哪些屬于 JDK工具?(多選)ABCD A、Java編譯器 B、Java運(yùn)行工具 C、Java文檔生成工具 D、Java打包工具 2、Java屬于以下哪種語(yǔ)言? C A、機(jī)器語(yǔ)言 B、匯編語(yǔ)言 C、高級(jí)語(yǔ)言 D、以上都不對(duì) 3、下面哪種類(lèi)型的文件可以在 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、Java編譯器 D、
3、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; 三、問(wèn)答題 1、簡(jiǎn)述Java的特點(diǎn)。 面向?qū)ο?、跨平臺(tái)性、健壯性、安全性、可移植性、多線程性、 動(dòng)態(tài)性等。 2、簡(jiǎn)述JRE與JDK的區(qū)別。 JRE (Java Runtime Environment , Java 運(yùn)行時(shí)環(huán)境),它 相當(dāng)于操作系統(tǒng)部分,提供了 Java程序運(yùn)行時(shí)所需
4、要的基本條 件和許多Java基礎(chǔ)類(lèi),例如,IO類(lèi)、GUI控件類(lèi)、網(wǎng)絡(luò)類(lèi)等。 JRE是提供給普通用戶使用的,如果你只想運(yùn)行別人開(kāi)發(fā)好的 Java程序,那么,你的計(jì)算機(jī)上必須且只需安裝 JRE。 JDK (Java Development Kit , Java 開(kāi)發(fā)工具包),它包含 編譯工具、解釋工具、文檔制作工具、打包工具多種與開(kāi)發(fā)相關(guān) 的工具,是提供給 Java開(kāi)發(fā)人員使用的。初學(xué)者學(xué)習(xí)和使用 Java語(yǔ)言時(shí),首先必須下載和安裝 JDKJDK中已經(jīng)包含了 JRE 部分,初學(xué)者安裝JDK后不必再去下載和安裝 JRE 了。 JDK (Java Development Kit , Java
5、開(kāi)發(fā)工具包),它包含 編譯工具、解釋工具、文檔制作工具、打包工具多種與開(kāi)發(fā)相關(guān) 的工具,是提供給 Java開(kāi)發(fā)人員使用的。初學(xué)者學(xué)習(xí)和使用 Java語(yǔ)言時(shí),首先必須下載和安裝 JDKJDK中已經(jīng)包含了 JRE 部分,初學(xué)者安裝JDK后不必再去下載和安裝 JRE 了。四、編 程題 使用記事本編寫(xiě)一個(gè) HelloWorld 程序,在dos命令行窗口編 譯運(yùn)行。請(qǐng)按照題目的要求編寫(xiě)程序并給出運(yùn)行結(jié)果。 public class HelloWorld { public static void main(String口 args) { System.out.println(" 這是第一個(gè) Jav
6、a 程序!”); } } 第2章Java編程基礎(chǔ) 一、填空題 1、Java中的程序代碼都必須在一個(gè)類(lèi)中定義,類(lèi)使用 __class 關(guān)鍵字來(lái)定義。 2、布爾常量即布爾類(lèi)型的兩個(gè)值,分別是_true 和 _flase 。 3、Java中的注釋可分為三種類(lèi)型,分別是 _單行注釋〃__、_ 多行注釋_/* */__、文檔/注釋** */。 4、Java中的變量可分為兩種數(shù)據(jù)類(lèi)型,分別是 基本數(shù)據(jù)類(lèi)型 手口一引用數(shù)據(jù)類(lèi)型 O 5、在Java中,byte類(lèi)型數(shù)據(jù)占 1__個(gè)字節(jié),short類(lèi)型數(shù) 據(jù)占__2一個(gè)字節(jié),int類(lèi)型數(shù)據(jù)占 —4— 個(gè)字節(jié),long類(lèi)型數(shù)據(jù)占
7、8」字節(jié)。 6、在邏輯運(yùn)算符中,運(yùn)算符 &___和&&用于表示邏輯 與,__|T口 __||—表示邏輯或。 7、若x = 2 ,則表達(dá)式(x + + ) /3的值是__0 o 8、若int a =2; a+=3; 執(zhí)行后,變量a的值為—5 o 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語(yǔ)言不區(qū)分大小寫(xiě)。錯(cuò) 2、0xC5表示的是一個(gè)十六進(jìn)制整數(shù)。對(duì) 3、continue 語(yǔ)句只
8、用于循環(huán)語(yǔ)句中,它的作用是跳出循環(huán)。 錯(cuò) 4、“/*…*/ ”中可以嵌套“ 〃 ”注釋,但不能嵌套“ /*???*/ 注釋。對(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)中哪些是正確的?(多選) (AD ) ABD A、方法名必須一致 B、返回值類(lèi)型必須不同 C、參數(shù)個(gè)數(shù)必須一致 D、參數(shù)的個(gè)數(shù)或類(lèi)型不一致 3、以下關(guān)于變量的說(shuō)法錯(cuò)誤的是? C A、變量名必須是一個(gè)有效的標(biāo)
9、識(shí)符 B、變量在定義時(shí)可以沒(méi)有初始值 C、變量一旦被定義,在程序中的任何位置都可以被訪問(wèn) D、在程序中,可以將一個(gè) byte類(lèi)型的值賦給一個(gè)int類(lèi)型的 變量,不需要特殊聲明 4、以下選項(xiàng)中,switch語(yǔ)句判斷條件可以接收的數(shù)據(jù)類(lèi)型有哪 些?(多選)ABCD A、int B、byte C、 char D、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è)? A A、/ B、\ C、% D、* 7、下列語(yǔ)句哪些屬于循環(huán)語(yǔ)句
10、?(多選) AC A、for語(yǔ)句 B、if語(yǔ)句 C、while 語(yǔ)句 D、switch 語(yǔ)句 8、下面哪種寫(xiě)法可以實(shí)現(xiàn)訪問(wèn)數(shù)組 arr的第1個(gè)元素?A A、arr[0] B、arr(0) C、arr[1] D、arr(1) (B)C 9、以下哪個(gè)選項(xiàng)可以正確創(chuàng)建一個(gè)長(zhǎng)度為 3的二維數(shù)組? A、new int [2][3]; B、new int[3]口; C、new int[][3]; D、以上答案皆不對(duì) 10、請(qǐng)先閱讀下面的代碼。 int x = 1; int y = 2; if (x % 2 == 0) { y++; } else { y--;
11、 } System.out.println("y=" + y); 上面一段程序運(yùn)行結(jié)束時(shí),變量 y的值為下列哪一項(xiàng)? A A、1 B、2 C、3 D、switch 語(yǔ)句 四、程序分析題 閱讀下面的程序,分析代碼是否能夠編譯通過(guò),如果能編譯通過(guò), 請(qǐng)列出運(yùn)行的結(jié)果。否則請(qǐng)說(shuō)明編譯失敗的原因。 代碼一:b=7(編譯不通過(guò)。int值4和b相加時(shí),由于變量 b 的類(lèi)型為byte ,取值范圍沒(méi)有int類(lèi)型大,存不下int類(lèi)型的 值,因此編譯不通過(guò)) public class Test01 { public static void main(String口 args) { byt
12、e b = 3; b = b + 4; System.out.println("b=" + b); } } 代碼二:不能,y只在{}有效(編譯不通過(guò)。這是因?yàn)?y是在 最里層的代碼塊中定義的一個(gè)變量,只有在那個(gè)代碼 ) public class Test02 { public static void main(String[] args){ int x = 12; { int y = 96; System.out.println("x is " + x); System.out.println("y is " + y); } y = x; System.out
13、.println("x is " + x); } } 代碼三:3因?yàn)闆](méi)有break,,所以4以后都執(zhí)行 public class Test03 { public static void main(String args口) { int x = 4, j = 0; switch (x) { case 1: j++; case 2: j++; case 3: j++; j++; case 5: j++; default: j++; } System.out.println(j); } } 代碼四: 9 8 7 public class T
14、est04 { public static void main(String args口) { int n = 9; while (n > 6) { System.out.println(n); n--; } } } 五、簡(jiǎn)答題 1、請(qǐng)列舉Java語(yǔ)言中的八種基本數(shù)據(jù)類(lèi)型,并說(shuō)明每種數(shù)據(jù) 類(lèi)型所占用的空間大小。 Java語(yǔ)言的八種基本數(shù)據(jù)類(lèi)型有:byte字節(jié)型,占一個(gè)字節(jié)。 short短整型,占兩個(gè)字節(jié)。int整型,占4個(gè)字節(jié)。long長(zhǎng)整 型,占8個(gè)字節(jié)。float單精度浮點(diǎn)型,占4個(gè)字節(jié)。double 雙精度浮點(diǎn)型,占8個(gè)字節(jié)。char字符型,占兩個(gè)字節(jié)。boolea
15、n 型,表示邏輯值,有true和false兩個(gè)值,分別占一個(gè)字節(jié)。 2、簡(jiǎn)述&&與&的區(qū)別并舉例說(shuō)明。 如果使用“&”在表達(dá)式之間進(jìn)行連接,那么無(wú)論任何情況,“&” 兩邊的表達(dá)式都會(huì)參與計(jì)算。如果使用“&& ”進(jìn)行連接,當(dāng)“&& ” 左邊的表達(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)?x < y為false , 表達(dá)式x / y不會(huì)執(zhí)行
16、3、什么是方法重載? 方法重載指的是在一個(gè)類(lèi)中可以聲明多個(gè)同名的方法, 而方法中 參數(shù)的個(gè)數(shù)或者數(shù)據(jù)類(lèi)型不一致。 調(diào)用這些同名的方法時(shí),JVM 會(huì)根據(jù)實(shí)際參數(shù)的不同綁定到不同的方法。 六、編程題 請(qǐng)按照題目的要求編寫(xiě)程序并給出運(yùn)行結(jié)果。 1、請(qǐng)編寫(xiě)程序,實(shí)現(xiàn)計(jì)算“ 1+3+5+7+ ???+99 ”的值。 提示: 1)使用循環(huán)語(yǔ)句實(shí)現(xiàn)自然數(shù) 1?99的遍歷。 2)在遍歷過(guò)程中,通過(guò)條件判斷當(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í)
17、現(xiàn)上面的函數(shù), 根據(jù)傳入的值x的不同,返回 對(duì)應(yīng)的y值。 提示: 1)定義一個(gè)static修飾符修飾的方法,方法接收一個(gè)int類(lèi)型的 參數(shù)x,返回值為int類(lèi)型。 2)在方法中使用if - else if..else 語(yǔ)句針對(duì)x的值進(jìn)行三種情況 的判斷。 3)根據(jù)判斷結(jié)果分別執(zhí)行不同的表達(dá)式,并將結(jié)果賦予變量 y o 4)在方法的最后返回y的值。 5)在main方法中調(diào)用設(shè)計(jì)好的方法,傳入一個(gè) int型的值,將 方法的返回值打印。 3、請(qǐng)編寫(xiě)程序,實(shí)現(xiàn)對(duì)數(shù)組{25,24,12,76,101,96,28} 的排序。 提示:使用冒泡排序算法。 第3章面向?qū)ο螅ㄉ希? 一、填
18、空題 1、面向?qū)ο蟮娜筇卣魇欠庋b性 _、_繼承性 f口—多態(tài)性 O 2、在Java中,可以使用關(guān)鍵字__new 來(lái)創(chuàng)建類(lèi)的實(shí)例對(duì)象。 3、定義在類(lèi)中的變量被稱為 —成員變量,定義在方法中的 變量被稱為局部變量 4、面向?qū)ο蟪绦蛟O(shè)計(jì)的重點(diǎn)是_類(lèi)―的設(shè)計(jì),—類(lèi)—是用來(lái)創(chuàng) 建對(duì)象的模板。 5、在非靜態(tài)成員方法中,可以使用關(guān)鍵字 _this__訪問(wèn)類(lèi)的其它 非靜態(tài)成員。 6、當(dāng)一個(gè)對(duì)象被當(dāng)成垃圾從內(nèi)存中釋放時(shí),它的 —finalize。 方法會(huì)被自動(dòng)調(diào)用。 7、被static關(guān)鍵字修飾的成員變量被稱為—靜態(tài)變量一它可以 被該類(lèi)所有的實(shí)例對(duì)象共享。 8、在一個(gè)類(lèi)中,除了可以定義
19、屬性、方法,還可以定義類(lèi),這 樣的類(lèi)被稱為_(kāi)內(nèi)部類(lèi) o 9、在Java中,提供了一個(gè)_javadoc 命令,用于將程序中 的文檔注釋提取出來(lái),生成 HTML格式 的幫助文檔。 10、所謂類(lèi)的封裝是指在定義一個(gè)類(lèi)時(shí),將類(lèi)中的屬性私有化, 即使用_private 關(guān)鍵字來(lái)修飾。 二、判斷題 1、在定義一個(gè)類(lèi)的時(shí)候,如果類(lèi)的成員被 private所修飾,該 成員不能在類(lèi)的外部被直接訪問(wèn)。對(duì) 2、Java中的每個(gè)類(lèi)都至少有一個(gè)構(gòu)造方法, 一個(gè)類(lèi)中如果沒(méi)有 定義構(gòu)造方法,系統(tǒng)會(huì)自動(dòng)為這個(gè)類(lèi) 創(chuàng)建一個(gè)默認(rèn)的構(gòu)造方法。對(duì) 3、聲明構(gòu)造方法時(shí),不能使用 private關(guān)鍵字修飾。錯(cuò)
20、 4、類(lèi)中static修飾的變量或方法,可以使用類(lèi)名或?qū)ο蟮囊? 變量訪問(wèn)。對(duì) 5、方法內(nèi)部類(lèi)中不能訪問(wèn)外部類(lèi)的成員變量。錯(cuò) 三、選擇題 1、類(lèi)的定義必須包含在以下哪種符號(hào)之間? B A、方括號(hào)口 B、花括號(hào){} C、雙引號(hào)”” D、圓括號(hào)() 2、下面哪一個(gè)是正確的類(lèi)的聲明? D A、public void HH {…} B、public class Move() {…} C、public class void number{} D、public class Car {…} 3、在以下什么情況下,構(gòu)造方法會(huì)被調(diào)用? A、類(lèi)定義時(shí) B、創(chuàng)建對(duì)象時(shí) C、調(diào)用對(duì)
21、象方法時(shí) D、使用對(duì)象的變量時(shí) 4、下面對(duì)于構(gòu)造方法的描述,正確有哪些? (多選)ABC A、方法名必須和類(lèi)名相同 B、方法名的前面沒(méi)有返回值類(lèi)型的聲明 C、在方法中不能使用return語(yǔ)句返回一個(gè)值 D、當(dāng)定義了帶參數(shù)的構(gòu)造方法,系統(tǒng)默認(rèn)的不帶參數(shù)的構(gòu)造方 法依然存在 5、使用this調(diào)用類(lèi)的構(gòu)造方法,下面的說(shuō)法正確的是? (多 選)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)造方法的語(yǔ)句必須放在第一行 D、不能在一個(gè)類(lèi)的兩個(gè)構(gòu)造方法中
22、使用 this互相調(diào)用 6、下面哪些可以使用 static關(guān)鍵字修飾?(多選)AC(ACD) A、成員變量 B、局部變量 C、成員方法 D、成員內(nèi)部類(lèi) 7、關(guān)于內(nèi)部類(lèi),下面說(shuō)法正確的是? (多選)ACD(ABCD) A、成員內(nèi)部類(lèi)是外部類(lèi)的一個(gè)成員,可以訪問(wèn)外部類(lèi)的其它成 員 B、外部類(lèi)可以訪問(wèn)成員內(nèi)部類(lèi)的成員 C、方法內(nèi)部類(lèi)只能在其定義的當(dāng)前方法中進(jìn)行實(shí)例化 D、靜態(tài)內(nèi)部類(lèi)中可以定義靜態(tài)成員,也可以定義非靜態(tài)成員 8、下面對(duì)于單例設(shè)計(jì)模式的描述,正確的是?(多 選)BCD(ABCD) A、類(lèi)中定義一個(gè)無(wú)參的構(gòu)造方法,并且聲明為私有 B、在內(nèi)部創(chuàng)建一個(gè)該類(lèi)的實(shí)例對(duì)象
23、,使用靜態(tài)變量引用該實(shí)例 對(duì)象 C、使用private修飾靜態(tài)變量,禁止外界直接訪問(wèn) D、定義靜態(tài)方法返回該類(lèi)實(shí)例 9、請(qǐng)先閱讀下面的代碼 D public class Test { public Test(){ System.out.println(" 構(gòu)造方法一被調(diào)用了 "); } public Test(int x){ this(); System.out.println(" 構(gòu)造方法二被調(diào)用了 "); } public Test(boolean b){ this(1); System.out.println(" 構(gòu)造方法三被調(diào)用了 "); } public sta
24、tic void main(String口 args) { Test test = new Test(true); } } 上面程序的運(yùn)行結(jié)果為下列哪一項(xiàng)? A、構(gòu)造方法一被調(diào)用了 B、構(gòu)造方法二被調(diào)用了 C、構(gòu)造方法三被調(diào)用了 D、以上三個(gè)選項(xiàng)之和 10、Outer類(lèi)中定義了一個(gè)成員內(nèi)部類(lèi) Inner ,需要在main() 方法中創(chuàng)建Inner類(lèi)實(shí)例對(duì)象,以下四種方式哪一種是正確的? D A、Inner in = new Inner() B、Inner in = new Outer.Inner(); C、Outer.Inner in = new Outer.Inn
25、er(); D、Outer.Inner in = new Outer().new Inner(); 四、程序分析題 閱讀下面的程序,分析代碼是否能夠編譯通過(guò),如果能編譯通過(guò), 請(qǐng)列出運(yùn)行的結(jié)果。否則請(qǐng)說(shuō)明編譯失敗的原因。 代碼一:不能,secret是私有成員,只能類(lèi)內(nèi)部訪問(wèn)(程序不能 編譯通過(guò),因?yàn)樵陬?lèi) A中的成員變量secret用private 修飾, 所以在類(lèi)Testi中無(wú)法訪問(wèn)) class A { private int secret = 5; } public class Testi { public static void main(String口 args)
26、{ A a = new A(); System.out.println(a.secret++); } } 代碼二:250(程序不能編譯通過(guò),因?yàn)樵陟o態(tài)方法 method() 中不能訪問(wèn)非靜態(tài)成員變量 X。) public class Test2 { int x = 50; static int y =200 ; public static void method() { System.out.println(x+y); } public static void main(String[] args) { Test2.method(); } } 代碼三:Inner
27、為私有內(nèi)部類(lèi),不允許外部訪問(wèn) (inner)Inner inner = new Outer().new Inner(); 可以用外部類(lèi)訪問(wèn)內(nèi)部類(lèi) public class Outer { public String name="Outer"; private class Inner { String name="inner"; void showName(){ System.out.println(name); } } public static void main(String口 args) { Inner inner = new Outer().new Inner();
28、 System.out.println( 3a92e716fc700abb68fce3.html); } } 五、簡(jiǎn)答題 1、構(gòu)造方法和普通的成員方法有什么區(qū)別? 構(gòu)造方法是類(lèi)的一個(gè)特殊成員, 它會(huì)在類(lèi)實(shí)例化對(duì)象時(shí)被自動(dòng)調(diào) 用。而普通方法只有在使用的時(shí)候才會(huì)被調(diào)用。 在定義構(gòu)造方法 時(shí)要求方法名與類(lèi)名相同、 在方法名的前面沒(méi)有返回值類(lèi)型的聲 明、在方法中不能使用return 語(yǔ)句返回一個(gè)值 2、單例設(shè)計(jì)模式具備哪些特點(diǎn)? 單例模式可以保證在整個(gè)程序運(yùn)行期間針對(duì)該類(lèi)只存在一個(gè)實(shí) 例對(duì)象。 六、編程題 1、請(qǐng)按照以下要求設(shè)計(jì)一個(gè)學(xué)生類(lèi) Student ,并進(jìn)行測(cè)試。 要
29、求如下: 1) Student類(lèi)中包含姓名、成績(jī)兩個(gè)屬性 2)分別給這兩個(gè)屬性定義兩個(gè)方法,一個(gè)方法用于設(shè)置值,另 一個(gè)方法用于獲取值. 3) Student類(lèi)中定義一個(gè)無(wú)參的構(gòu)造方法和一個(gè)接收兩個(gè)參數(shù) 的構(gòu)造方法,兩個(gè)參數(shù)分別為姓名和成績(jī)屬性賦值 4)在測(cè)試類(lèi)中創(chuàng)建兩個(gè) Student對(duì)象,一個(gè)使用無(wú)參的構(gòu)造方 法,然后調(diào)用方法給姓名和成績(jī)賦值, 一個(gè)使用有參的構(gòu)造方法, 在構(gòu)造方法中給姓名和成績(jī)賦值 2、定義一個(gè)Father和Child類(lèi),并進(jìn)行測(cè)試。 要求如下: 1) Father類(lèi)為外部類(lèi),類(lèi)中定義一個(gè)私有的 String類(lèi)型的屬 性 name , name 的值為 “
30、 zhangjun ”。 2) Child 類(lèi)為Father類(lèi)的內(nèi)部類(lèi),其中定義一個(gè)introFather() 方法,方法中調(diào)用Father類(lèi)的name屬性。 3)定義一個(gè)測(cè)試類(lèi) Test ,在Test類(lèi)的main()方法中,創(chuàng)建 Child對(duì)象,并調(diào)用introFather() 方法。 第4章面向?qū)ο?下) 一、填空題 1、在Java語(yǔ)言中,允許使用已存在的類(lèi)作為基礎(chǔ)創(chuàng)建新的類(lèi), 這種技術(shù)我們稱為繼承 o 2、一個(gè)類(lèi)如果實(shí)現(xiàn)一個(gè)接口,那么它就需要實(shí)現(xiàn)接口中定義的 全部一方法.否則該類(lèi)就必須定 義成—抽象類(lèi)? 3、在程序開(kāi)發(fā)中,要想將一個(gè)包中的類(lèi)導(dǎo)入到當(dāng)前程序中,可
31、以使用_import 關(guān)鍵字。 4、一個(gè)類(lèi)可以從其它的類(lèi)派生出來(lái),派生出來(lái)的類(lèi)稱為 一子類(lèi) 2用于派生的類(lèi)稱為一基類(lèi) 或者_(dá)父類(lèi)―O 5、JDK中定義了大量的異常類(lèi),這些類(lèi)都是 .Exception 類(lèi)的子類(lèi)或者間接子類(lèi)。 6、定義一個(gè)Java類(lèi)時(shí),如果前面加使用_final 關(guān)鍵字修 飾,那么該類(lèi)不可以被繼承。 7、如果子類(lèi)想使用父類(lèi)中的成員, 可以通過(guò)關(guān)鍵字 super 引用父類(lèi)的成員。 8、在Java語(yǔ)言中,所有的類(lèi)都直接或間接繼承自_Object 類(lèi)。 9、異常的捕獲通常由try、catch兩部分組成,_try 代碼 塊用來(lái)存放可能發(fā)生異常,_catch 代
32、碼塊用 來(lái)處理產(chǎn)生的異常。 10、在Java語(yǔ)言中,要想是將一個(gè)已編譯的類(lèi)打包成 jar文件, 可以使用的命令是_jar-cvf ,要 想在命令行窗口運(yùn)行jar文件,可以使用的命令是__java-jar。 二、判斷題 1、抽象方法必須定義在抽象類(lèi)中,所以抽象類(lèi)中的方法都是抽 象方法。錯(cuò) 2、Java中被final關(guān)鍵字修飾的變量,不能被重新賦值。對(duì) 3、不存在繼承關(guān)系的情況下,也可以實(shí)現(xiàn)方法重寫(xiě)。錯(cuò) 4、package 聲明語(yǔ)句應(yīng)當(dāng)為Java源文件中的第一條語(yǔ)句。對(duì) 5、接口中只能定義常量和抽象方法。錯(cuò) (對(duì)) 三、選擇題 1、在類(lèi)的繼承關(guān)系中,需要遵循以下哪個(gè)繼承原則
33、? B A、多重 B、單一 C、雙重 D、不能繼承 2、在Java語(yǔ)言中,以下哪個(gè)關(guān)鍵字用于在方法上聲明拋出異 常? C A.try B.catch C.throws D.throw 3、關(guān)于super關(guān)鍵字以下說(shuō)法哪些是正確的?(多選) ABD (ABC) A、super關(guān)鍵字可以調(diào)用父類(lèi)的構(gòu)造方法 B、super關(guān)鍵字可以調(diào)用父類(lèi)的普通方法 C、super與this不能同時(shí)存在于同一個(gè)構(gòu)造方法中 D、super與this可以同時(shí)存在于同一個(gè)構(gòu)造方法中 4、以下說(shuō)法哪些是正確的?(多選) ABCD A、Java語(yǔ)言中允許一個(gè)類(lèi)實(shí)現(xiàn)多個(gè)接口 B、Java
34、語(yǔ)言中不允許一個(gè)類(lèi)繼承多個(gè)類(lèi) C、Java語(yǔ)言中允許一個(gè)類(lèi)同時(shí)繼承一個(gè)類(lèi)并實(shí)現(xiàn)一個(gè)接口 D、Java語(yǔ)言中允許一個(gè)接口繼承一個(gè)接口 5、類(lèi)中的一個(gè)成員方法被下面哪個(gè)修飾符修飾,該方法只能在 本類(lèi)被訪問(wèn)? C A、public B、protected C、private D、default 6、關(guān)于抽象類(lèi)的說(shuō)法哪些是正確的?(多選) AC A、抽象類(lèi)中可以有非抽象方法。 B、如果父類(lèi)是抽象類(lèi),則子類(lèi)必須重寫(xiě)父類(lèi)所有的抽象方法。 C、不能用抽象類(lèi)去創(chuàng)建對(duì)象。 D、接口和抽象類(lèi)是同一個(gè)概念。 7、在Java中,要想讓一個(gè)類(lèi)繼承另一個(gè)類(lèi),可以使用以下哪 個(gè)關(guān)鍵字? C
35、 A、inherits B、implements C、extends D、modifies 8、System 類(lèi)位于以下哪個(gè)包中? D A、java.io B、java.util C、java.awt D 68fce3.htmlng 9、已知類(lèi)的繼承關(guān)系如下: A class Employee; class Manager extends Employee; class Director extends Employee; 則以下語(yǔ)句能通過(guò)編譯的有哪些? A、Employee e=new Manager。; B、Director d=new Manager
36、。; 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"); } } A
37、、產(chǎn)生編譯錯(cuò)誤 B、代碼可以編譯運(yùn)行,并輸出結(jié)果 AB C、代碼可以編譯運(yùn)行,但沒(méi)有輸出 D、編譯沒(méi)有錯(cuò)誤,但會(huì)產(chǎn)生運(yùn)行時(shí)異常 四、分析題 閱讀下面的程序,分析代碼是否能編譯通過(guò),如果能編譯通過(guò), 請(qǐng)列出運(yùn)行的結(jié)果。如果不能編譯通過(guò),請(qǐng)說(shuō)明原因。 代碼一:進(jìn)入catch代碼塊 進(jìn)入finally代碼塊(程序編譯能通過(guò),這是因?yàn)閕nt x = 2 / 0; System.out.println(x); 這兩條語(yǔ)句使用了 try塊,捕獲了程序 因?yàn)槌?而產(chǎn)生的異常情況,之后程序會(huì)繼續(xù)向下執(zhí)行, 輸出 “進(jìn)入catch代碼塊”,“進(jìn)入finally 代碼塊”。) publ
38、ic class Test01 { public static void main(String口 args) { try { int x = 2 / 0; System.out.println(x); } catch (Exception e) { System.out.println(" 進(jìn)入 catch 代碼塊"); } finally { System.out.println(" 進(jìn)入 finally 代碼塊"); } } } 代碼二:不能,final修飾shout,不能被重寫(xiě)(程序編譯不通過(guò), 這是因?yàn)樵诔绦蛑惺褂昧?final關(guān)鍵字修飾 Animal類(lèi),使
39、得 Animal類(lèi)不能被繼承。shout()方法中同樣使用了 final關(guān)鍵 字,使得該方法不能被重寫(xiě)。) final class Animal { public final void shout() { //程序代碼 } } class Dog extends Animal { public void shout() { //程序代碼 } } class Test02 { public static void main(String口 args) { Dog dog=new Dog(); } } 代碼三:動(dòng)物叫! 汪汪…… class Animal { voi
40、d shout() { System.out.println(" 動(dòng)物叫!"); } } class Dog extends Animal { void shout() { super.shout(); System.out.println(" 汪汪 ”); } } public class Test03 { public static void main(String口 args) { Animal animal = new Dog(); animal.shout(); } } 代碼四:不能,Dog沒(méi)有實(shí)現(xiàn)Animal所有方法,Dog為抽象 類(lèi)不能創(chuàng)建對(duì)象(程
41、序編譯不通過(guò),因?yàn)榻涌谥卸x的方法不能 有方法體,所以定義的 eat()方法是錯(cuò)誤的。接口中的方法必須 在子類(lèi)中全部實(shí)現(xiàn),由于run()方法在子類(lèi)中并沒(méi)有重新實(shí)現(xiàn), 所以這也是錯(cuò)誤的。) interface 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.printl
42、n("I m eathing") } } public class test04 { public static void main(String [] args) { Dog dog = new Dog(); dog.breathe(); dog.eat(); } } 五、簡(jiǎn)答題 1、什么是方法重寫(xiě)? 在繼承關(guān)系中,子類(lèi)的方法與父類(lèi)的某一方法具有相同的方法 名、返回類(lèi)型和參數(shù)列表,則稱子類(lèi)的該方法重寫(xiě) (覆蓋)父類(lèi)的 方法。 2、什么是多態(tài)? 多態(tài)意味著一個(gè)對(duì)象有著多種形態(tài), 可以在特定的情況下,表現(xiàn) 不同的狀態(tài),從而對(duì)應(yīng)著不同的屬性和方法。簡(jiǎn)單的說(shuō),多
43、態(tài)就 是使用父類(lèi)類(lèi)型的變量引用子類(lèi)對(duì)象, 根據(jù)被引用子類(lèi)對(duì)象的特 性,程序會(huì)得到不同的運(yùn)行效果。 3、抽象類(lèi)和接口的區(qū)別? 在Java中,使用abstract關(guān)鍵字修飾的類(lèi)稱之為抽象類(lèi)。抽 象類(lèi)是不能被實(shí)例化的,通常需要寫(xiě)一個(gè)子類(lèi)來(lái)繼承抽象類(lèi), 同 時(shí)實(shí)例化子類(lèi)來(lái)獲得該類(lèi)的對(duì)象。抽象類(lèi)通常用于表示一種抽象 的概念。 接口可以說(shuō)是一種特殊的抽象類(lèi), 接口中只能定義常量和抽象方 法。由于接口的特殊性,在定義時(shí)需要使用 interface 關(guān)鍵字。 六、編程題 請(qǐng)按照題目的要求編寫(xiě)程序并給出運(yùn)行結(jié)果。 1、設(shè)計(jì)一個(gè)學(xué)生類(lèi) Student 和它的一個(gè)子類(lèi) Undergraduate
44、, 要求如下: 1) Student 類(lèi)有name(姓名)、和age(年齡)屬性,一個(gè)包含 兩個(gè)參數(shù)的構(gòu)造方法,用于給 name 和age屬性賦值,一個(gè) show()方法打印Student 的屬性信息 2)本科生類(lèi) Undergraduate 增加一個(gè) degree(學(xué)位)屬性。 有一個(gè)包含三個(gè)參數(shù)的構(gòu)造方法,前兩個(gè)參數(shù)用于給繼承的 name和age屬性賦值,第三個(gè)參數(shù)給 degree 專業(yè)賦值,一 個(gè)show()方法用 于打印Undergraduate 的屬性信息 3)在測(cè)試類(lèi)中分別創(chuàng)建 Student 對(duì)象和 Undergraduate 對(duì) 象,調(diào)用它們的show()。 2
45、、設(shè)計(jì)一個(gè)Shape接口和它的兩個(gè)實(shí)現(xiàn)類(lèi) Square和Circle , 要求如下: 1) Shape接口中有一個(gè)抽象方法 area(),方法接收有一個(gè) double類(lèi)型的參數(shù),返回一個(gè) double類(lèi)型的結(jié)果 2) Square和Circle中實(shí)現(xiàn)了 Shape接口的area()抽象方法, 分別求正方形和圓形的面積并返回在測(cè)試類(lèi)中創(chuàng)建 Square 和 Circle對(duì)象,計(jì)算邊長(zhǎng)為2的正方形面積和半徑為 3的圓形面 積 3、自定義一個(gè)異常類(lèi) NoThisSoundException 和 Player 類(lèi), 在Player的play()方法中使用自定義異常, 要求入下: 1)
46、NoThisSongException 繼承 Exception 類(lèi),類(lèi)中有一個(gè) 無(wú)參和一個(gè)接收一個(gè)String類(lèi)型參數(shù)的構(gòu)造方法,構(gòu)造方法中 都使用super關(guān)鍵字調(diào)用父類(lèi)的構(gòu)造方法。 2) Player類(lèi)中定義一個(gè) play(int index)方法,方法接收一個(gè) int類(lèi)型的參數(shù),表示播放歌曲的索引,當(dāng)index>10 時(shí),paly() 方法用throw關(guān)鍵字拋出NoThisSongException 異常,創(chuàng)建 異常對(duì) 象時(shí),調(diào)用有參的構(gòu)造方法,傳入“您播放的歌曲不存在”。 3)在測(cè)試類(lèi)中創(chuàng)建 Player對(duì)象,并調(diào)用play()方法測(cè)試自定 義的 NoThisSongEx
47、ception 異常,使用 try ???catch 語(yǔ)句捕獲 異常,調(diào)用 NoThisSongException 的 getMessage()方法打 印出異常信息。 第5章多線程 一、填空題 1、一個(gè)應(yīng)用程序中有多條并發(fā)執(zhí)行的線索,每條線索都被稱作 一個(gè)線程 L它們會(huì)交替執(zhí)行, 彼此 間可以進(jìn)行_通信 O 2、在實(shí)現(xiàn)多線程的程序時(shí)有兩種方式,一是通過(guò)繼 _Thread 承類(lèi),二是通過(guò)實(shí)現(xiàn) Runnable 接口。 3、yield()方法只能讓相同優(yōu)先級(jí)或者更高優(yōu)先級(jí)、處于 _就緒 狀態(tài)的線程獲得運(yùn)行的機(jī)會(huì)。 4、在Java語(yǔ)言中,同步方法需要用到關(guān)鍵字 .synchro
48、nized., 對(duì)于同步方法而言無(wú)需指定同步鎖, 它的同步 鎖是方法所在的_對(duì)象 2也就是_this(關(guān)鍵字)。 5、在多任務(wù)系統(tǒng)中,每個(gè)獨(dú)立執(zhí)行的程序稱之為 _線程 2 也就是“正在運(yùn)行的程序”。 6、線程的整個(gè)生命周期分為五個(gè)階段,分別是 _新建>就 緒> _運(yùn)行> _阻塞>和死亡 o 7、線程的優(yōu)先級(jí)用 1?10 之間的整數(shù)來(lái)表示,其中__10___代 表優(yōu)先級(jí)最高,__1 —代表優(yōu)先級(jí)最低。 8、在Thread類(lèi)中,提供了一個(gè)start()方法,該方法用于啟動(dòng) 線程 L當(dāng)新線程啟動(dòng)后,系統(tǒng)會(huì) 自動(dòng)調(diào)用 —run()方法。 9、要 想解決 線程間的 通信問(wèn) 題,
49、可以 使用_wait()、 notify()、_notifyALL() 方法。 10、要將某個(gè)線程設(shè)置為后臺(tái)線程,需要調(diào)用該線程的 _setDaemon(true) 方法,該方法必須在 _start()方法之前調(diào)用。 二、判斷題 1、當(dāng)我們創(chuàng)建一個(gè)線程對(duì)象時(shí),該對(duì)象表示的線程就立即開(kāi)始 運(yùn)行。錯(cuò) 2、如果前臺(tái)線程全部死亡,后臺(tái)線程也會(huì)自動(dòng)死亡。對(duì) 3、同步代碼塊中的鎖對(duì)象可以是任意類(lèi)型的對(duì)象。對(duì) 4、靜態(tài)方法不能使用 synchronized 關(guān)鍵字來(lái)修飾。錯(cuò) 5、線程結(jié)束等待或者阻塞狀態(tài)后,會(huì)進(jìn)入運(yùn)行狀態(tài)。錯(cuò) 三、選擇題 1、Thread 類(lèi)位于下列哪個(gè)包中? B
50、 A、java.io B、C、java.util D、java.awt 2、關(guān)于線程的創(chuàng)建過(guò)程,下面四種說(shuō)法正確的有哪些? (多 選)AC A、定義Thread 類(lèi)的子類(lèi),重寫(xiě) Thread 類(lèi)的run()方法,創(chuàng) 建該子類(lèi)的實(shí)例對(duì)象,調(diào)用對(duì)象的 start() 方法 B、定義Thread 類(lèi)的子類(lèi),重寫(xiě) Thread 類(lèi)的run()方法,創(chuàng) 建該子類(lèi)的實(shí)例對(duì)象,調(diào)用對(duì)象的 run() 方法 C、定義一個(gè)實(shí)現(xiàn) Runnable 接口的類(lèi)并實(shí)現(xiàn)run()方法,創(chuàng)建 該類(lèi)實(shí)例對(duì)象,將其作為參數(shù)傳遞給 Thread類(lèi)的構(gòu)造方法來(lái)創(chuàng)建 Thread對(duì)象,調(diào)用Thread對(duì)象 的star
51、t()方法 D、定義一個(gè)實(shí)現(xiàn)Runnable 接口的類(lèi)并實(shí)現(xiàn)run()方法,創(chuàng)建 該類(lèi)對(duì)象,然后調(diào)用run()方法 3、對(duì)于通過(guò)實(shí)現(xiàn)Runnable 接口創(chuàng)建線程,下面說(shuō)法正確的有 哪些?(多選)ABC A、適合多個(gè)相同程序代碼的線程去處理同一個(gè)資源的情況 B、把線程同程序代碼、數(shù)據(jù)有效的分離,很好的體現(xiàn)了面向?qū)?象的設(shè)計(jì)思想 C、可以避免由于Java的單繼承帶來(lái)的局限性 D、編寫(xiě)簡(jiǎn)單,可以不通過(guò) Thread類(lèi)直接創(chuàng)建線程 4、對(duì)于線程的生命周期,下面四種說(shuō)法正確的有哪些? (多選) ABC(BC) A、調(diào)用了線程的start()方法,該線程就進(jìn)入運(yùn)行狀態(tài)(就緒, 還要
52、獲得CPU使用權(quán)) B、線程的run()方法運(yùn)行結(jié)束或被未catch 的 InterruptedException 等異常終結(jié),那么該線程進(jìn)入死 亡狀態(tài) C、線程進(jìn)入死亡狀態(tài),但是該線程對(duì)象仍然是一個(gè) Thread對(duì) 象,在沒(méi)有被垃圾回收器回收之前 仍可以像引用其它對(duì)象一樣引用它 D、線程進(jìn)入死亡狀態(tài)后,調(diào)用它的start()方法仍然可以重新啟 動(dòng) 5、對(duì)于死鎖的描述,下面四種說(shuō)法正確有哪些? (多選)AB (ABD ) A、當(dāng)兩個(gè)線程互相等待對(duì)方釋放同步鎖時(shí)會(huì)發(fā)生死鎖 B、Java虛擬機(jī)沒(méi)有檢測(cè)和處理死鎖的措施 C、一旦出現(xiàn)死鎖,程序會(huì)發(fā)生異常 D、處于死鎖狀態(tài)的線
53、程處于阻塞狀態(tài),無(wú)法繼續(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、線程調(diào)用了 setDaemon(boolean b) 方法 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()方法時(shí) B、線程調(diào)用了 join()方法(終止) C、線程調(diào)用了 y
54、ield()方法時(shí) D、線程調(diào)用了 notify()方法?? 9、下面四個(gè)選項(xiàng)中,對(duì)線程同步的目的描述正確的有哪些? (多 選)AD(AB) A、鎖定資源,使同一時(shí)刻只有一個(gè)線程去訪問(wèn)它,防止多個(gè)線 程操作同一個(gè)資源引發(fā)錯(cuò)誤 B、提高線程的執(zhí)行效率 C、讓線程獨(dú)占一個(gè)資源 D、讓多個(gè)線程同時(shí)使用一個(gè)資源 10、對(duì)于wait()方法,下面說(shuō)法正確的是?(多選)ABCD A、wait()方法的調(diào)用者是同步鎖對(duì)象 B、wait()方法使線程進(jìn)入等待狀態(tài) C、調(diào)用同一鎖對(duì)象的notify()或notifyAll() 方法可以喚醒調(diào)用 wait()方法等待的線程 D、調(diào)用w
55、ait()方法的線程會(huì)釋放同步鎖對(duì)象 四、程序分析題 閱讀下面的程序,分析代碼是否能編譯通過(guò),如果能編譯通過(guò), 請(qǐng)列出運(yùn)行的結(jié)果。如果不能編譯通過(guò),請(qǐng)說(shuō)明原因。 1 .代碼一:不能, RunHandler 沒(méi)有繼承 Thread ,不能用 Thread創(chuàng)建對(duì)象(程序不能編譯通過(guò),因?yàn)?RunHandler 類(lèi)沒(méi) 有實(shí)現(xiàn)Runnable 接口,因此RunHandler 的實(shí)例對(duì)象不能作 為參數(shù)傳遞給Thread的構(gòu)造方法。) class RunHandler { public void run(){ System.out.println("run"); } } public cla
56、ss Test { public static void main(String [] args) { Thread t = new Thread(new RunHandler()); t.start(); } } 2 .代碼二:this is run(程序不能編譯通過(guò),因?yàn)?Thread的子 類(lèi)A重寫(xiě)的run()方法的訪問(wèn)級(jí)別不能低于 父類(lèi)run()方法的。訪問(wèn)級(jí)別) public class A extends Thread{ protected void run() { System.out.println("this is run()"); } public
57、static void main(String口 args) { A a = new A(); a.start(); } } 3 .代碼三:Exception(程序不能編譯通過(guò),因?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 (InterruptedEx
58、ception e) { System.out.println("Exception"); } } public static void main(String口 args) { new Test().a(); } } 4 .為了使下面的程序能夠輸出“ Thread is running ”,請(qǐng)?jiān)谠?空格處填上相應(yīng)的代碼。 public class B implements Runnable { public static void main(String口 args) { Thread t = new Thread(new B()); __t.start() 〃此處
59、填空 } public void run() { System.out.println("Thread is running"); } public void go() { start(1); } public void start(int i) { } } 五、簡(jiǎn)答題 1、java中有幾種方法可以實(shí)現(xiàn)一個(gè)線程?清舉例說(shuō)明。 一種是繼承包下的 Thread類(lèi),覆寫(xiě)Thread類(lèi)的run()方法, 在run()方法中實(shí)現(xiàn)運(yùn)行在線程上的代碼。 new Thread() { public void run(){} }.start(); 另一種就是實(shí)現(xiàn) Runnable
60、 接口,同樣是在run()方法中實(shí)現(xiàn)運(yùn) 行在線程上的代碼。 new Thread(new Runnable(){ public void run(){} }).start() 2、sleep() 和wait() 有什么區(qū)別? 調(diào)用sleep()方法,正在執(zhí)行的線程主動(dòng)讓出 CPU去執(zhí)行其他 線程,在sleep()方法指定的時(shí)間過(guò)后,CPU才會(huì)回到這個(gè)線 程上繼續(xù)往下執(zhí)行,如果當(dāng)前線程進(jìn)入了同步鎖, sleep()方法 并不會(huì)釋放鎖,即使當(dāng)前線程使用sleep()方法讓出了 CPU,但 其它被同步鎖擋住了的線程也無(wú)法得到執(zhí)行。 wait()在一個(gè)已經(jīng) 進(jìn)入了同步鎖的線程內(nèi)進(jìn)行調(diào)用,讓
61、當(dāng)前線程暫時(shí)讓出同步鎖, 以便其它正在等待此鎖的線程可以得到同步鎖井運(yùn)行。 當(dāng)其它線 程調(diào)用了 notify()方法后,調(diào)用 wait()方法的線程就會(huì)解除wait狀態(tài),當(dāng)再次獲得同步鎖后,程序可以繼續(xù)向下執(zhí)行。 六、編程題 請(qǐng)按照題目的要求編寫(xiě)程序并給出運(yùn)行結(jié)果。 1、通過(guò)繼承Thread類(lèi)的方式創(chuàng)建兩個(gè)線程,在 Thread構(gòu)造 方法中指定線程的名字,并將這兩個(gè)線程 的名字打印出來(lái)。 2、通過(guò)實(shí)現(xiàn)Runnable 接口的方式創(chuàng)建一個(gè)新線程, 要求main 線程打印100此次“ main ”,新線程打 印 50 次 “ new ”。 3、模擬傳智播客的三個(gè)老師同時(shí)分發(fā) 80份
62、學(xué)習(xí)筆記,每個(gè)老 師相當(dāng)于一個(gè)線程。 4、編寫(xiě)10個(gè)線程,第一個(gè)線程從 1加到10,第二個(gè)線程從 11加到20...第十個(gè)線程從91加到100 , 最后再把十個(gè)線程結(jié)果相加。 第 6 章 JavaAPI 一、填空題 1、在Java中定義了兩個(gè)類(lèi)來(lái)封裝對(duì)字符串的操作,它們分別 是 String_ 和_StringBuffer 。 2、Java 中的操作日期的類(lèi)有_Date、_Calendar、 DateFormat 等。 3、在程序中若想取得一個(gè) Runtime 實(shí)例,則可以調(diào)用Runtime 類(lèi)的靜態(tài)方法getRnutime() 。 4、Math類(lèi)中用于計(jì)算所傳遞參數(shù)平
63、方根的方法是 _sqrt()。 5、Java中專門(mén)用于將日期格式化為字符串的類(lèi)是 _DateFormat 。 6、Math類(lèi)中有兩個(gè)靜態(tài)常量 PI和E,分別代表數(shù)學(xué)常量_兀— 和 _e o 7、Java中的用于產(chǎn)生隨機(jī)數(shù)的類(lèi)是 _Random ,它位于 java.util 包中。 8、String 類(lèi)中用于返回字符串字符個(gè)數(shù)的方法是 _length() 。 9、System 類(lèi)中所提供的屬性和方法都是 一靜態(tài)___的,想要引 用這些屬性和方法,直接使用 System類(lèi) 調(diào)用即可。 10、已知 sb 為 StringBuffer 的一個(gè)實(shí)例,且 sb.toString()
64、的值為"abcde ",則執(zhí)行sb. reverse。后, sb.toString()的值為二edcba_ " ? 二、判斷題 1、String對(duì)象和StringBuffer 對(duì)象都是字符串變量,創(chuàng)建后 都可以修改。錯(cuò) 2、用運(yùn)算符“==”比較字符串對(duì)象時(shí),如果兩個(gè)字符串的值相 同,結(jié)果為true。錯(cuò) 3、System 類(lèi)中1的 currentTimeMillis() 方法返回一個(gè) long 類(lèi) 型的值。對(duì) 4、Date、Calendar 以及 DateFormat 類(lèi)都位于 java.util 包 中。錯(cuò)分別 java.util.Date java.util.Calendar
65、 java.text.DateFormat 5、 String 類(lèi) 的方法 replace (CharSequence srtl, CharSequence srt2)返回一個(gè)新的字符串,它是通過(guò)用 srt2 替換此字符串中出現(xiàn)的所有 srt1得到的。對(duì)三、選擇題。 1、先閱讀下面的程序片段:C String str = "abccdefcdh"; String口 arr = str.split("c"); System.out.println(arr.length); 程序執(zhí)行后,打印的結(jié)果是幾? A、2個(gè) B、3個(gè) C、4個(gè) D、5個(gè) 2、以下都是Math類(lèi)的常用方法
66、,其中用于計(jì)算絕對(duì)值的方法 是哪個(gè)? C A、ceil() B、floor() C、abs() D、random() 3、Random 對(duì)象能夠生成以下哪種類(lèi)型的隨機(jī)數(shù)? D A、 int B、string C、double D、A 和 C 4、String s = "abcdedcba"; 貝U s.substring(3 , 4)返回的字 符串是以下選項(xiàng)中的哪個(gè)? C A、cd B、de C、d D、e 5、假若indexOf()方法未能找到所指定的子字符串,則返回以 下選項(xiàng)中的哪個(gè)? C A、false B、0 C、-1 D、以上答案都不對(duì) 6、要產(chǎn)生[20 ,999]之間的隨機(jī)整數(shù)可以使用以下哪個(gè)表達(dá)式? B A. (int)(20+Math.random()*97) B. 20+(int)(Math.random()*980) C. (int)Math.ran
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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í)語(yǔ)文下冊(cè)第2課《鄉(xiāng)下人家》ppt課件
- 全等三角形1--公開(kāi)課一等獎(jiǎng)ppt課件
- 《會(huì)跳舞樹(shù)葉娃娃》課件
- 9兒童詩(shī)兩首_人教版五年級(jí)的語(yǔ)文下冊(cè)課件
- 綠色植物是食物之源(我的課件)0
- 河南專版2022春八年級(jí)語(yǔ)文下冊(cè)第四單元16慶祝奧林匹克運(yùn)動(dòng)復(fù)興25周年習(xí)題課件新人教版
- 全國(guó)xx杯說(shuō)課大賽機(jī)械類(lèi)一等獎(jiǎng)作品:鉗工車(chē)模的制作說(shuō)課ppt課件
- 六年級(jí)下冊(cè)數(shù)學(xué)ppt課件-總復(fù)習(xí)(1)數(shù)的認(rèn)識(shí)-整數(shù)∣北師大版
- 牛頓第二定律優(yōu)秀完整公開(kāi)課ppt課件
- 調(diào)脂與卒中防治課件
- 點(diǎn)到平面的距離課件
- 聚焦新醫(yī)改形勢(shì)下的醫(yī)院發(fā)展戰(zhàn)略
- 四肢血管超聲基礎(chǔ)