《Java基礎(chǔ)入門》-課后習(xí)題(共35頁)

上傳人:20****08 文檔編號:58922652 上傳時間:2022-03-01 格式:DOC 頁數(shù):35 大小:178.50KB
收藏 版權(quán)申訴 舉報 下載
《Java基礎(chǔ)入門》-課后習(xí)題(共35頁)_第1頁
第1頁 / 共35頁
《Java基礎(chǔ)入門》-課后習(xí)題(共35頁)_第2頁
第2頁 / 共35頁
《Java基礎(chǔ)入門》-課后習(xí)題(共35頁)_第3頁
第3頁 / 共35頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《Java基礎(chǔ)入門》-課后習(xí)題(共35頁)》由會員分享,可在線閱讀,更多相關(guān)《《Java基礎(chǔ)入門》-課后習(xí)題(共35頁)(35頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、精選優(yōu)質(zhì)文檔-----傾情為你奉上 《Java基礎(chǔ)入門》課后習(xí)題 第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)境變量則用來保存保存Java虛擬機要運行的“

2、.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、Java文檔制作工具

3、 B、Java解釋器?? C、Java編譯器??????D、Java啟動器? 5、如果jdk的安裝路徑為:d:\jdk,若想在命令窗口中任何當(dāng)前路徑下,都可以直接使用javac和java命令,需要將環(huán)境變量path設(shè)置為以下哪個選項?B A.d:\jdk;????????B.d?:\jdk\bin;????C.d:\jre\bin;???????D.d:\jre; 三、問答題 1、簡述Java的特點。 2、簡述JRE與JDK的區(qū)別。 四、編程題 使用記事本編寫一個HelloWorld程序,在dos命令行窗口編譯運行。請按照題目的要求編寫程序并給出運行結(jié)果。 第2章 J

4、ava編程基礎(chǔ) 一、填空題 1、Java中的程序代碼都必須在一個類中定義,類使用__class____關(guān)鍵字來定義。 2、布爾常量即布爾類型的兩個值,分別是_true_____和_flase_____。 3、Java中的注釋可分為三種類型,分別是_單行注釋//__、__多行注釋_/* */__、文檔/注釋** */______。 4、Java中的變量可分為兩種數(shù)據(jù)類型,分別是_基本數(shù)據(jù)類型_____和_引用數(shù)據(jù)類型_____。 5、在Java中,byte類型數(shù)據(jù)占____1__個字節(jié),short類型數(shù)據(jù)占__2____個字節(jié),int類型數(shù)據(jù)占___4___個字節(jié),long類型數(shù)據(jù)

5、占____8__個字節(jié)。 6、在邏輯運算符中,運算符___&___和___&&___用于表示邏輯與,__|____和__||____表示邏輯或。 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表示的是一

6、個十六進制整數(shù)。對 3、continue 語句只用于循環(huán)語句中,它的作用是跳出循環(huán)。錯 4、“/*…*/”中可以嵌套“//”注釋,但不能嵌套“/*…*/”注釋。對 5、-5%3的運算結(jié)果是2。錯 三、選擇題 1、以下選項中,哪些屬于合法的標(biāo)識符?(多選)AD A、Hello_World B、class C、123username D、username123 2、關(guān)于方法重載的描述,以下選項中哪些是正確的?(多選)(AD)ABD A、方法名必須一致 B、返回值類型必須不同 C、參數(shù)個數(shù)必須一致 D、參數(shù)的個數(shù)或類型不一致

7、 3、以下關(guān)于變量的說法錯誤的是? C A、變量名必須是一個有效的標(biāo)識符 B、變量在定義時可以沒有初始值 C、變量一旦被定義,在程序中的任何位置都可以被訪問 D、在程序中,可以將一個byte類型的值賦給一個int類型的變量,不需要特殊聲明 4、以下選項中,switch語句判斷條件可以接收的數(shù)據(jù)類型有哪些? (多選) ABCD A、int B、byte C、char D、short 5、假設(shè)int x = 2,三元表達式 x>0?x+1:5 的運行結(jié)果是以下哪一個? C   A、0 B、2 C、3 D、5 6、下面的運算符中,用于執(zhí)行除

8、法運算是哪個? A A、/ B、\ 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];

9、 D、 以上答案皆不對 10、請先閱讀下面的代碼。 int x = 1; int y = 2; if (x % 2 == 0) { y++; } else { y--; } System.out.println("y=" + y); 上面一段程序運行結(jié)束時,變量y的值為下列哪一項?A A、1 B、2 C、3 D、switch語句 四、程序分析題 閱讀下面的程序,分析代碼是否能夠編譯通過,如果能編譯通過,請列出運行的結(jié)果。否則請說明編譯失敗的原因。 代碼一:b=7(編譯不通過。int值4和b相加時,由于變量b的類型為byte,取值范圍

10、沒有int類型大,存不下int類型的值,因此編譯不通過) 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;

11、 { int y = 96; 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) { cas

12、e 1: j++; case 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ū)別并舉例說明。 如果使用“&”在表達式之間進行連接,那么無論任何情況,“&”兩邊的表達式都會參與計算。如果使用“&&

14、”進行連接,當(dāng)“&&”左邊的表達式為false,則不會執(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ù)類型不一致。調(diào)用這些同名的方法時,JVM會根據(jù)實際參數(shù)的不同綁定到不同的方法。 六、編程題 請按照題目的要求編寫程序并給出運行

15、結(jié)果。 1、請編寫程序,實現(xiàn)計算“1+3+5+7+…+99”的值。 提示: 1) 使用循環(huán)語句實現(xiàn)自然數(shù)1~99的遍歷。 2) 在遍歷過程中,通過條件判斷當(dāng)前遍歷的數(shù)是否為奇數(shù),如果是就累加,否則不加。 2、已知函數(shù) x + 3 ( x > 0 ) y = 0 ( x = 0 ) x2 –1 ( x < 0 ) 請設(shè)計一個方法實現(xiàn)上面的函數(shù),根據(jù)傳入的值x的不同,返回對應(yīng)的y值。 提示: 1) 定義一個static修飾符修飾

16、的方法,方法接收一個int類型的參數(shù)x,返回值為int類型。 2) 在方法中使用if…else if..else 語句針對x的值進行三種情況的判斷。 3) 根據(jù)判斷結(jié)果分別執(zhí)行不同的表達式,并將結(jié)果賦予變量y。 4) 在方法的最后返回y的值。 5) 在main方法中調(diào)用設(shè)計好的方法,傳入一個int型的值,將方法的返回值打印。 3、請編寫程序,實現(xiàn)對數(shù)組{25,24,12,76,101,96,28} 的排序。 提示:使用冒泡排序算法。 第3章 面向?qū)ο螅ㄉ希? 一、填空題 1、 面向?qū)ο蟮娜筇卣魇欠庋b性_、_繼承性_____和__多態(tài)性____。 2、 在J

17、ava中,可以使用關(guān)鍵字__new____來創(chuàng)建類的實例對象。 3、 定義在類中的變量被稱為__成員變量____,定義在方法中的變量被稱為局部變量______ 4、 面向?qū)ο蟪绦蛟O(shè)計的重點是_類___的設(shè)計,__類____是用來創(chuàng)建對象的模板。 5、 在非靜態(tài)成員方法中,可以使用關(guān)鍵字_this__訪問類的其它非靜態(tài)成員。 6、 當(dāng)一個對象被當(dāng)成垃圾從內(nèi)存中釋放時,它的__finalize()____方法會被自動調(diào)用。 7、 被static關(guān)鍵字修飾的成員變量被稱為_靜態(tài)變量_,它可以被該類所有的實例對象共享。 8、 在一個類中,除了可以定義屬性、方法,還可以定義類,這樣的類被稱為

18、_內(nèi)部類_____。 9、在Java中,提供了一個_javadoc_____命令,用于將程序中的文檔注釋提取出來,生成HTML格式的幫助文檔。 10、所謂類的封裝是指在定義一個類時,將類中的屬性私有化,即使用_private_____關(guān)鍵字來修飾。 二、判斷題 1、在定義一個類的時候,如果類的成員被private所修飾,該成員不能在類的外部被直接訪問。對 2、Java中的每個類都至少有一個構(gòu)造方法,一個類中如果沒有定義構(gòu)造方法,系統(tǒng)會自動為這個類創(chuàng)建一個默認(rèn)的構(gòu)造方法。對 3、聲明構(gòu)造方法時,不能使用private關(guān)鍵字修飾。錯 4、類中static修飾的變量或方法,可以使用類名

19、或?qū)ο蟮囊米兞吭L問。對 5、方法內(nèi)部類中不能訪問外部類的成員變量。錯 三、選擇題 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、在以下什么情況下,構(gòu)造方法會被調(diào)用?B A、 類定義時

20、 B、 創(chuàng)建對象時 C、 調(diào)用對象方法時 D、 使用對象的變量時 4、下面對于構(gòu)造方法的描述,正確有哪些?(多選)ABC A、方法名必須和類名相同 B、方法名的前面沒有返回值類型的聲明 C、在方法中不能使用return語句返回一個值 D、當(dāng)定義了帶參數(shù)的構(gòu)造方法,系統(tǒng)默認(rèn)的不帶參數(shù)的構(gòu)造方法依然存在 5、使用this調(diào)用類的構(gòu)造方法,下面的說法正確的是?(多選)ACD(ABCD) A、使用this調(diào)用構(gòu)造方法的格式為this([參數(shù)1,參數(shù)2…]) B、只能在構(gòu)造方法中使用this調(diào)用其它的構(gòu)造方法 C、使用this調(diào)用其它構(gòu)造方法的語句必須放在第

21、一行 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)部類是外部類的一個成員,可以訪問外部類的其它成員 B、外部類可以訪問成員內(nèi)部類的成員 C、方法內(nèi)部類只能在其定義的當(dāng)前方法中進行實例化 D、靜態(tài)內(nèi)部類中可以定義靜態(tài)成員,也可以定義非靜態(tài)成員 8、下面對于單例設(shè)計模式的描述,正確的是?(多選)BCD(ABCD) A、類中定義一個

22、無參的構(gòu)造方法,并且聲明為私有 B、在內(nèi)部創(chuàng)建一個該類的實例對象,使用靜態(tài)變量引用該實例對象 C、使用private修飾靜態(tài)變量,禁止外界直接訪問 D、定義靜態(tài)方法返回該類實例 9、 請先閱讀下面的代碼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(bool

23、ean b){ this(1); System.out.println("構(gòu)造方法三被調(diào)用了"); } public static void main(String[] args) { Test test = new Test(true); } } 上面程序的運行結(jié)果為下列哪一項? A、構(gòu)造方法一被調(diào)用了 B、構(gòu)造方法二被調(diào)用了 C、構(gòu)造方法三被調(diào)用了 D、以上三個選項之和 10、Outer類中定義了一個成員內(nèi)部類Inner,需要在main()方法中創(chuàng)建Inner類實例對象,以下四種方式哪一種是正確的?D

24、 A、 Inner in = new Inner() B、Inner in = new Outer.Inner(); C、 Outer.Inner in = new Outer.Inner(); D、Outer.Inner in = new Outer().new Inner(); 四、程序分析題 閱讀下面的程序,分析代碼是否能夠編譯通過,如果能編譯通過,請列出運行的結(jié)果。否則請說明編譯失敗的原因。 代碼一:不能,secret是私有成員,只能類內(nèi)部訪問(程序不能編譯通過,因為在類A中的成員變量secret用private修飾,所以在類Test1中無

25、法訪問) class A { 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 me

26、thod() { System.out.println(x+y); } public static void main(String[] args) { Test2.method(); } } 代碼三:Inner為私有內(nèi)部類,不允許外部訪問(inner)Inner inner = new Outer().new Inner();可以用外部類訪問內(nèi)部類 public class Outer { public String name="Outer"; private class Inner { String name="inner"; void

27、showName(){ System.out.println(name); } } public static void main(String[] args) { Inner inner = new Outer().new Inner(); System.out.println(inner.name); } } 五、簡答題 1、構(gòu)造方法和普通的成員方法有什么區(qū)別? 構(gòu)造方法是類的一個特殊成員,它會在類實例化對象時被自動調(diào)用。而普通方法只有在使用的時候才會被調(diào)用。在定義構(gòu)造方法時要求方法名與類名相同、在方法名的前面沒有返回值類型的聲明、在方法中不能

28、使用return語句返回一個值 2、 單例設(shè)計模式具備哪些特點? 單例模式可以保證在整個程序運行期間針對該類只存在一個實例對象。 六、編程題 1、請按照以下要求設(shè)計一個學(xué)生類Student,并進行測試。 要求如下: 1)Student類中包含姓名、成績兩個屬性 2)分別給這兩個屬性定義兩個方法,一個方法用于設(shè)置值,另一個方法用于獲取值. 3)Student類中定義一個無參的構(gòu)造方法和一個接收兩個參數(shù)的構(gòu)造方法,兩個參數(shù)分別為姓名和成績屬性賦值 4)在測試類中創(chuàng)建兩個Student對象,一個使用無參的構(gòu)造方法,然后調(diào)用方法給姓名和成績賦值,一個使用有參的構(gòu)造方法,在構(gòu)造

29、方法中給姓名和成績賦值 2、定義一個Father和Child類,并進行測試。 要求如下: 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ù)我們稱為繼承____

30、__。 2、一個類如果實現(xiàn)一個接口,那么它就需要實現(xiàn)接口中定義的全部_方法_____,否則該類就必須定義成_抽象類_____。 3、在程序開發(fā)中,要想將一個包中的類導(dǎo)入到當(dāng)前程序中,可以使用_import_____關(guān)鍵字。 4、一個類可以從其它的類派生出來,派生出來的類稱為_子類_____,用于派生的類稱為_基類_____或者__父類____。 5、 JDK中定義了大量的異常類,這些類都是_Exception_____類的子類或者間接子類。 6、定義一個Java類時,如果前面加使用_final_____關(guān)鍵字修飾,那么該類不可以被繼承。 7、如果子類想使用父類中的成員,可以通過關(guān)鍵

31、字__super____引用父類的成員。 8、在Java語言中,所有的類都直接或間接繼承自_Object_____類。 9、異常的捕獲通常由try、catch兩部分組成,_try_____代碼塊用來存放可能發(fā)生異常,_catch_____代碼塊用 來處理產(chǎn)生的異常。 10、在Java語言中,要想是將一個已編譯的類打包成jar文件,可以使用的命令是_jar-cvf_____,要想在命令行窗口運行jar文件,可以使用的命令是__java-jar___。 二、判斷題 1、抽象方法必須定義在抽象類中,所以抽象類中的方法都是抽象方法。錯 2、Java中被final關(guān)鍵字修飾的變量,不能被重

32、新賦值。對 3、不存在繼承關(guān)系的情況下,也可以實現(xiàn)方法重寫。錯 4、package聲明語句應(yīng)當(dāng)為Java源文件中的第一條語句。對 5、接口中只能定義常量和抽象方法。錯(對) 三、選擇題 1、在類的繼承關(guān)系中,需要遵循以下哪個繼承原則?B A、多重  B、單一  C、雙重  D、不能繼承 2、在Java語言中,以下哪個關(guān)鍵字用于在方法上聲明拋出異常?C A.try   B.catch   C.throws   D.throw 3、關(guān)于super關(guān)鍵字以下說法哪些是正確的?(多選)ABD(ABC) A、super關(guān)鍵字可以調(diào)用父類的構(gòu)造方法

33、B、super關(guān)鍵字可以調(diào)用父類的普通方法 C、super與this不能同時存在于同一個構(gòu)造方法中 D、super與this可以同時存在于同一個構(gòu)造方法中 4、以下說法哪些是正確的?(多選)ABCD A、Java語言中允許一個類實現(xiàn)多個接口 B、Java語言中不允許一個類繼承多個類 C、Java語言中允許一個類同時繼承一個類并實現(xiàn)一個接口 D、Java語言中允許一個接口繼承一個接口 5、類中的一個成員方法被下面哪個修飾符修飾,該方法只能在本類被訪問?C A、public B、 protected C、 private D、defau

34、lt 6、關(guān)于抽象類的說法哪些是正確的?(多選)AC A、抽象類中可以有非抽象方法。 B、如果父類是抽象類,則子類必須重寫父類所有的抽象方法。 C、不能用抽象類去創(chuàng)建對象。 D、接口和抽象類是同一個概念。 7、在Java中,要想讓一個類繼承另一個類,可以使用以下哪個關(guān)鍵字?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、已知類的繼承關(guān)系如下: A clas

35、s Employee; class 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、編譯運行下面的程序,結(jié)果是什么?B public class A { public static void main(Strin

36、g[] 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、產(chǎn)生編譯錯誤 B、代碼可以編譯運行,并輸出結(jié)果AB C、代碼可以編譯運行,但沒有輸出 D、編譯沒有錯誤,但會產(chǎn)生運行時異常 四、分析題 閱讀下面的程序,分析代碼是否

37、能編譯通過,如果能編譯通過,請列出運行的結(jié)果。如果不能編譯通過,請說明原因。 代碼一:進入catch代碼塊 進入finally代碼塊(程序編譯能通過,這是因為int x = 2 / 0; System.out.println(x);這兩條語句使用了try塊,捕獲了程序因為除以0而產(chǎn)生的異常情況,之后程序會繼續(xù)向下執(zhí)行,輸出“進入catch代碼塊”,“進入finally代碼塊”。) public class Test01 { public static void main(String[] args) { try { int x = 2 / 0; System.o

38、ut.println(x); } catch (Exception e) { System.out.println("進入catch代碼塊"); } finally { System.out.println("進入finally代碼塊"); } } } 代碼二:不能,final修飾shout,不能被重寫(程序編譯不通過,這是因為在程序中使用了final關(guān)鍵字修飾Animal類,使得Animal類不能被繼承。shout()方法中同樣使用了final關(guān)鍵字,使得該方法不能被重寫。) final class Animal { public final

39、void shout() { // 程序代碼 } } 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 An

40、imal { void shout() { 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()方法是錯誤的。接口中的方法必須在子類

41、中全部實現(xiàn),由于run()方法在子類中并沒有重新實現(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 test0

42、4 { public static void main(String [] args) { Dog dog = new Dog(); dog.breathe(); dog.eat(); } } 五、簡答題 1、什么是方法重寫? 在繼承關(guān)系中,子類的方法與父類的某一方法具有相同的方法名、返回類型和參數(shù)列表,則稱子類的該方法重寫(覆蓋)父類的方法。 2、什么是多態(tài)? 多態(tài)意味著一個對象有著多種形態(tài),可以在特定的情況下,表現(xiàn)不同的狀態(tài),從而對應(yīng)著不同的屬性和方法。簡單的說,多態(tài)就是使用父類類型的變量引用子類對象,根據(jù)被引用子類對象

43、的特性,程序會得到不同的運行效果。 3、抽象類和接口的區(qū)別? 在Java中,使用abstract關(guān)鍵字修飾的類稱之為抽象類。抽象類是不能被實例化的,通常需要寫一個子類來繼承抽象類,同時實例化子類來獲得該類的對象。抽象類通常用于表示一種抽象的概念。 接口可以說是一種特殊的抽象類,接口中只能定義常量和抽象方法。由于接口的特殊性,在定義時需要使用interface關(guān)鍵字。 六、編程題 請按照題目的要求編寫程序并給出運行結(jié)果。 1、 設(shè)計一個學(xué)生類Student和它的一個子類Undergraduate,要求如下: 1) Student類有name(姓名)、和age(年齡)屬性,一個包含

44、兩個參數(shù)的構(gòu)造方法,用于給name和age屬性賦值,一個show()方法打印Student的屬性信息 2) 本科生類Undergraduate增加一個degree(學(xué)位)屬性。有一個包含三個參數(shù)的構(gòu)造方法,前兩個參數(shù)用于給繼承的name和age屬性賦值,第三個參數(shù)給degree專業(yè)賦值,一個show()方法用于打印Undergraduate的屬性信息 3) 在測試類中分別創(chuàng)建Student對象和Undergraduate對象,調(diào)用它們的show()。 2、設(shè)計一個Shape接口和它的兩個實現(xiàn)類Square和Circle,要求如下: 1)Shape接口中有一個抽象方法area(),方法接

45、收有一個double類型的參數(shù),返回一個double類型的結(jié)果 2)Square和Circle中實現(xiàn)了Shape接口的area()抽象方法,分別求正方形和圓形的面積并返回 在測試類中創(chuàng)建Square和Circle對象,計算邊長為2的正方形面積和半徑為3的圓形面積 3、自定義一個異常類NoThisSoundException和Player類,在Player的play()方法中使用自定義異常,要求入下: 1) NoThisSongException繼承Exception類,類中有一個無參和一個接收一個String類型參數(shù)的構(gòu)造方法,構(gòu)造方法中都使用super關(guān)鍵字調(diào)用父類的構(gòu)造方法。 2

46、) Player類中定義一個play(int index)方法,方法接收一個int類型的參數(shù),表示播放歌曲的索引,當(dāng)index>10時,paly()方法用throw關(guān)鍵字拋出NoThisSongException異常,創(chuàng)建異常對象時,調(diào)用有參的構(gòu)造方法,傳入“您播放的歌曲不存在”。 3) 在測試類中創(chuàng)建Player對象,并調(diào)用play()方法測試自定義的NoThisSongException異常,使用try…catch語句捕獲異常,調(diào)用NoThisSongException的getMessage()方法打印出異常信息。 第5章 多線程 一、填空題 1、一個應(yīng)用程序中有多條并發(fā)執(zhí)行

47、的線索,每條線索都被稱作一個線程______,它們會交替執(zhí)行,彼此 間可以進行_通信_____。 2、在實現(xiàn)多線程的程序時有兩種方式,一是通過繼_Thread_____承類,二是通過實現(xiàn)Runnable______接口。 3、yield()方法只能讓相同優(yōu)先級或者更高優(yōu)先級、處于_就緒_____狀態(tài)的線程獲得運行的機會。 4、在Java語言中,同步方法需要用到關(guān)鍵字_synchronized_,對于同步方法而言無需指定同步鎖,它的同步 鎖是方法所在的_對象_____,也就是_this_____(關(guān)鍵字)。 5、在多任務(wù)系統(tǒng)中,每個獨立執(zhí)行的程序稱之為_線程_____,也就是“正在運

48、行的程序”。 6、線程的整個生命周期分為五個階段,分別是_新建_____、就緒______、_運行_____、_阻塞_____、和死亡_____。 7、線程的優(yōu)先級用1~10之間的整數(shù)來表示,其中__10___代表優(yōu)先級最高,__1___代表優(yōu)先級最低。 8、在Thread類中,提供了一個start()方法,該方法用于啟動線程______,當(dāng)新線程啟動后,系統(tǒng)會自動調(diào)用__run()____方法。 9、要想解決線程間的通信問題,可以使用__wait()____、notify()______、_notifyALL()_____方法。 10、要將某個線程設(shè)置為后臺線程,需要調(diào)用該線程的_

49、setDaemon(true)_____方法,該方法必須在_start()_____方法之前調(diào)用。 二、判斷題 1、當(dāng)我們創(chuàng)建一個線程對象時,該對象表示的線程就立即開始運行。錯 2、如果前臺線程全部死亡,后臺線程也會自動死亡。對 3、同步代碼塊中的鎖對象可以是任意類型的對象。對 4、靜態(tài)方法不能使用synchronized關(guān)鍵字來修飾。錯 5、線程結(jié)束等待或者阻塞狀態(tài)后,會進入運行狀態(tài)。錯 三、選擇題 1、Thread類位于下列哪個包中?B A、java.io B、java.lang C、java.util D、java.awt

50、2、關(guān)于線程的創(chuàng)建過程,下面四種說法正確的有哪些?(多選)AC A、定義Thread類的子類,重寫Thread類的run()方法,創(chuàng)建該子類的實例對象,調(diào)用對象的start()方法 B、定義Thread類的子類,重寫Thread類的run()方法,創(chuàng)建該子類的實例對象,調(diào)用對象的run()方法 C、定義一個實現(xiàn)Runnable 接口的類并實現(xiàn)run()方法,創(chuàng)建該類實例對象,將其作為參數(shù)傳遞給Thread類的構(gòu)造方法來創(chuàng)建Thread對象,調(diào)用Thread對象的start()方法 D、定義一個實現(xiàn)Runnable 接口的類并實現(xiàn)run()方法,創(chuàng)建該類對象,然后調(diào)用run(

51、)方法 3、對于通過實現(xiàn)Runnable接口創(chuàng)建線程,下面說法正確的有哪些?(多選)ABC A、適合多個相同程序代碼的線程去處理同一個資源的情況 B、把線程同程序代碼、數(shù)據(jù)有效的分離,很好的體現(xiàn)了面向?qū)ο蟮脑O(shè)計思想 C、可以避免由于Java的單繼承帶來的局限性 D、編寫簡單,可以不通過Thread類直接創(chuàng)建線程 4、對于線程的生命周期,下面四種說法正確的有哪些?(多選) ABC(BC)   A、調(diào)用了線程的start()方法,該線程就進入運行狀態(tài) (就緒,還要獲得CPU使用權(quán)) B、線程的run()

52、方法運行結(jié)束或被未catch的InterruptedException等異常終結(jié),那么該線程進入死亡狀態(tài) C、線程進入死亡狀態(tài),但是該線程對象仍然是一個Thread對象,在沒有被垃圾回收器回收之前仍可以像引用其它對象一樣引用它 D、線程進入死亡狀態(tài)后,調(diào)用它的start()方法仍然可以重新啟動 5、對于死鎖的描述,下面四種說法正確有哪些?(多選)AB(ABD) A、當(dāng)兩個線程互相等待對方釋放同步鎖時會發(fā)生死鎖 B、Java虛擬機沒有檢測和處理死鎖的措施 C、一旦出現(xiàn)死鎖,程序會發(fā)生異常 D、處于死鎖狀態(tài)的線程處于阻塞狀態(tài),無法繼續(xù)

53、運行 6、下面四個選項中,哪些是線程進入阻塞狀態(tài)的原因?(多選)ABC A、線程試圖獲取某個對象的同步鎖,而該鎖被其它線程持有 B、線程調(diào)用了另一個線程的join()方法 C、當(dāng)線程調(diào)用了一個阻塞式的IO方法 D、線程調(diào)用了setDaemon(boolean b)方法 7、線程調(diào)用sleep()方法后,該線程將進入以下哪種狀態(tài)?C A、就緒狀態(tài) B、運行狀態(tài) C、阻塞狀態(tài) D、死亡狀態(tài) 8、在以下哪種情況下,線程進入就緒狀態(tài)?D A、線程調(diào)用了sleep()方法時 B、線程調(diào)用了join()方法(終止) C、線程調(diào)用

54、了yield()方法時 D、線程調(diào)用了notify()方法?? 9、下面四個選項中,對線程同步的目的描述正確的有哪些?(多選)AD(AB) A、鎖定資源,使同一時刻只有一個線程去訪問它,防止多個線程操作同一個資源引發(fā)錯誤 B、提高線程的執(zhí)行效率 C、讓線程獨占一個資源 D、讓多個線程同時使用一個資源 10、對于wait()方法,下面說法正確的是?(多選)ABCD A、wait()方法的調(diào)用者是同步鎖對象 B、wait()方法使線程進入等待狀態(tài) C、調(diào)用同一鎖對象的notify()或notifyAll()方法可以喚醒調(diào)用wait()方法等待

55、的線程 D、調(diào)用wait()方法的線程會釋放同步鎖對象 四、程序分析題 閱讀下面的程序,分析代碼是否能編譯通過,如果能編譯通過,請列出運行的結(jié)果。如果不能編譯通過,請說明原因。 1.代碼一:不能,RunHandler沒有繼承Thread,不能用Thread創(chuàng)建對象(程序不能編譯通過,因為RunHandler類沒有實現(xiàn)Runnable接口,因此RunHandler的實例對象不能作為參數(shù)傳遞給Thread的構(gòu)造方法。) class RunHandler { public void run(){ System.out.println("run"); } }

56、public class Test { public static void main(String [] args) { Thread t = new Thread(new RunHandler()); t.start(); } } 2.代碼二:this?is?run(程序不能編譯通過,因為Thread的子類A重寫的run()方法的訪問級別不能低于父類run()方法的。訪問級別) public class A extends Thread{ protected void run() { System.out.println

57、("this?is?run()"); } public static void main(String[] args) { A a = new A(); a.start(); } } 3.代碼三:Exception(程序不能編譯通過,因為同步方法中調(diào)用wait()方法的對象必須為同步鎖對象) public class Test{ private Object obj=new Object(); public synchronized void a(){ try { obj.wait();改this.wait()

58、 System.out.println("waiting"); } catch (InterruptedException e) { System.out.println("Exception"); } } public static void main(String[] args) { new Test().a(); } } 4.為了使下面的程序能夠輸出“Thread is running”,請在在空格處填上相應(yīng)的代碼。 public class B implements Runnable { public static void main(S

59、tring[] args) { Thread 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包下的T

60、hread類,覆寫Thread類的run()方法,在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ū)別? 調(diào)用sleep()方法,正在執(zhí)行的線程主動讓出CPU去執(zhí)行其他線程,在sleep()方法指定的時間

61、過后,CPU才會回到這個線程上繼續(xù)往下執(zhí)行,如果當(dāng)前線程進入了同步鎖,sleep()方法并不會釋放鎖,即使當(dāng)前線程使用sleep()方法讓出了CPU,但其它被同步鎖擋住了的線程也無法得到執(zhí)行。wait()在一個已經(jīng)進入了同步鎖的線程內(nèi)進行調(diào)用,讓當(dāng)前線程暫時讓出同步鎖,以便其它正在等待此鎖的線程可以得到同步鎖并運行。當(dāng)其它線程調(diào)用了notify()方法后,調(diào)用wait()方法的線程就會解除wait狀態(tài),當(dāng)再次獲得同步鎖后,程序可以繼續(xù)向下執(zhí)行。 六、編程題 請按照題目的要求編寫程序并給出運行結(jié)果。 1、通過繼承Thread類的方式創(chuàng)建兩個線程,在Thread構(gòu)造方法中指定線程的名字,并將

62、這兩個線程的名字打印出來。 2、通過實現(xiàn)Runnable接口的方式創(chuàng)建一個新線程,要求main線程打印100此次“main”,新線程打印50次“new”。 3、模擬傳智播客的三個老師同時分發(fā)80份學(xué)習(xí)筆記,每個老師相當(dāng)于一個線程。 4、編寫10個線程,第一個線程從1加到10,第二個線程從11加到20...第十個線程從91加到100,最后再把十個線程結(jié)果相加。 第6章 JavaAPI 一、填空題 1、在Java中定義了兩個類來封裝對字符串的操作,它們分別是String_和_StringBuffer____。 2、Java中的操作日期的類有_Date___、_Calendar___

63、、DateFormat____等。 3、在程序中若想取得一個Runtime實例,則可以調(diào)用Runtime類的靜態(tài)方法getRnutime()_____。 4、Math類中用于計算所傳遞參數(shù)平方根的方法是_sqrt()____。 5、Java中專門用于將日期格式化為字符串的類是_DateFormat____。 6、Math類中有兩個靜態(tài)常量PI和E,分別代表數(shù)學(xué)常量_π___和_e___。 7、Java中的用于產(chǎn)生隨機數(shù)的類是_Random___,它位于java.util____包中。 8、String類中用于返回字符串字符個數(shù)的方法是_length()____。 9、System

64、類中所提供的屬性和方法都是_靜態(tài)___的,想要引用這些屬性和方法,直接使用System類調(diào)用即可。 10、已知 sb 為 StringBuffer 的一個實例,且 sb.toString() 的值為 "abcde ", 則執(zhí)行sb. reverse()后,sb.toString()的值為_”edcba_”___。 二、判斷題 1、String對象和StringBuffer對象都是字符串變量,創(chuàng)建后都可以修改。錯 2、用運算符“==”比較字符串對象時,如果兩個字符串的值相同,結(jié)果為true。錯 3、System類中的currentTimeMillis()方法返回一個long類型的值。對

65、 4、Date、Calendar以及DateFormat類都位于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"); S

66、ystem.out.println(arr.length); 程序執(zhí)行后,打印的結(jié)果是幾? 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、要產(chǎn)生[20,999]之間的隨機整數(shù)可以使用以下哪個表達式?B

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!