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