《Java基礎(chǔ)入門》_課后習(xí)題要點(diǎn)_第1頁
《Java基礎(chǔ)入門》_課后習(xí)題要點(diǎn)_第2頁
《Java基礎(chǔ)入門》_課后習(xí)題要點(diǎn)_第3頁
《Java基礎(chǔ)入門》_課后習(xí)題要點(diǎn)_第4頁
《Java基礎(chǔ)入門》_課后習(xí)題要點(diǎn)_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、博學(xué)谷一一讓IT教學(xué)更簡(jiǎn)單,讓IT學(xué)習(xí)更有效Java基礎(chǔ)入門課后習(xí)題第1章Java開發(fā)入門一、填空題1、 Java 的三大體系分另1J是 _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)境變量用來存儲(chǔ) Java的編譯和運(yùn)行工具所在的路徑,而_classpath 環(huán)境變量則用來保存保存Java虛擬機(jī)要運(yùn)行的“ .class”文件路徑。二、選擇題1、以下選項(xiàng)中,哪些屬于JDK工具?(多選)ABCDA

2、、Java編譯器 B、Java運(yùn)行工具C、Java文檔生成工具D、Java打包工具2、Java屬于以下哪種語言?CA、機(jī)器語言B、 匯編語言C、高級(jí)語言D、以上都不對(duì)3、下面哪種類型的文件可以在Java虛擬機(jī)中運(yùn)行? DA、.java B、.jreC、.exeD、.class4、安裝好JDK后,在其bin目錄下有許多exe可執(zhí)行文件,其中java.exe命令的作用是以下哪一種?BA、Java文檔制作工具B、Java解釋器 C、Java編譯器 D、Java啟動(dòng)器5、如果jdk的安裝路徑為:d:jdk,若想在命令窗口中任何當(dāng)前路徑下,都可以直接使用javac和java命令,需要將環(huán)境變量path設(shè)

3、置為以下哪個(gè)選項(xiàng)?BA. d:jdk; B . d :jdkbin; C . d:jrebin; D . d:jre; 三、問答題1、簡(jiǎn)述Java的特點(diǎn)。2、簡(jiǎn)述JRE與JDK的區(qū)別。四、編程題使用記事本編寫一個(gè)HelloWorld程序,在dos命令行窗口編譯運(yùn)行。請(qǐng)按照題目的要求編寫程序并給出運(yùn)行結(jié)果。第2章Java編程基礎(chǔ)一、填空題1、Java中的程序代碼都必須在一個(gè)類中定義,類使用 _class 關(guān)鍵字來定義。2、布爾常量即布爾類型的兩個(gè)值,分別是 _true 和flase。3、Java中的注釋可分為三種類型,分別是_單行注釋、多行注釋_/* */_、文檔/注釋* */4、Java中的變

4、量可分為兩種數(shù)據(jù)類型,分別是_基本數(shù)據(jù)類型 和_引用數(shù)據(jù)類型 。5、在Java中,byte類型數(shù)據(jù)占 1個(gè)字節(jié),short類型數(shù)據(jù)占2 個(gè)字節(jié),int類型數(shù)據(jù)占 4個(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;,則 a2= _34。10、若 int a32=123,345,34,56,34,56,則 a21= _56。二、判斷題1、Ja

5、va語言不區(qū)分大小寫。錯(cuò)2、0xC5表示的是一個(gè)十六進(jìn)制整數(shù)。對(duì)3、continue語句只用于循環(huán)語句中,它的作用是跳出循環(huán)。錯(cuò)4、“/*/'中可以嵌套“ /”注釋,但不能嵌套“ /*/”注釋。對(duì)5、-5%3的運(yùn)算結(jié)果是2。錯(cuò)三、選擇題1、以下選項(xiàng)中,哪些屬于合法的標(biāo)識(shí)符?(多選)ADA、Hello_World B、class C、123username D、username1232、關(guān)于方法重載的描述,以下選項(xiàng)中哪些是正確的?(多選)( AD) ABDA、方法名必須一致B、返回值類型必須不同C、參數(shù)個(gè)數(shù)必須一致D、參數(shù)的個(gè)數(shù)或類型不一致3、以下關(guān)于變量的說法錯(cuò)誤的是?CA、變量名必須

6、是一個(gè)有效的標(biāo)識(shí)符B、變量在定義時(shí)可以沒有初始值C、變量一旦被定義,在程序中的任何位置都可以被訪問D、在程序中,可以將一個(gè)byte類型的值賦給一個(gè)int類型的變量,不需要特殊聲明4、以下選項(xiàng)中,switch語句判斷條件可以接收的數(shù)據(jù)類型有哪些?(多選)ABCDA、 int B、 byte C、charD、 short5、假設(shè)int x = 2,三元表達(dá)式 x>0?x+1:5的運(yùn)行結(jié)果是以下哪一個(gè)?CA、0 B、2 C、3 D、56、下面的運(yùn)算符中,用于執(zhí)行除法運(yùn)算是哪個(gè)?AA、/ B、 C、 D、*7、下列語句哪些屬于循環(huán)語句?(多選)ACA、for語句 B、if語句 C、while語句

7、 D、switch語句8、下面哪種寫法可以實(shí)現(xiàn)訪問數(shù)組arr的第1個(gè)元素?AA、arr0B、arr(0)C、arr1D、arr(1)9、以下哪個(gè)選項(xiàng)可以正確創(chuàng)建一個(gè)長(zhǎng)度為3的二維數(shù)組? (B)CA、 new int 23;B、 new int3肛C、 new int3;D、以上答案皆不對(duì)10、請(qǐng)先閱讀下面的代碼。int x = 1;int y = 2;if (x % 2 = 0) y+; else y-;System.out.println("y=" + y);上面一段程序運(yùn)行結(jié)束時(shí),變量 y的值為下列哪一項(xiàng)?AA、1 B、2 C、3 D、switch 語句四、程序分析題閱

8、讀下面的程序,分析代碼是否能夠編譯通過,如果能編譯通過,請(qǐng)列出運(yùn)行的結(jié)果。否則請(qǐng)說明編譯失敗的原因。代碼一 :b=7(編譯不通過。int值4和b相加時(shí),由于變量 b的類型為byte,取值范圍沒有int類型大, 存不下int類型的值,因此編譯不通過)public class Test01 public static void main(String口 args) byte b = 3;b = b + 4;System.out.println("b=" + b); 代碼二:不能,y只在有效(編譯不通過。這是因?yàn)?y是在最里層的代碼塊中定義的一個(gè)變量,只 有在那個(gè)代碼)publi

9、c 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.println("x is " + x);代碼三:3 因?yàn)闆]有break,所以4以后都執(zhí)行public class Test03 public static void main(String args口)int x = 4, j

10、= 0;switch (x) case 1:j+;case 2:j+;case 3:j+;case 4:j+;case 5:j+;default: j+;System.out.println(j);代碼四:987public class Test04 public static void main(String args口)int n = 9;while (n > 6) System.out.println(n);n-; 五、簡(jiǎn)答題1、請(qǐng)列舉Java語言中的八種基本數(shù)據(jù)類型,并說明每種數(shù)據(jù)類型所占用的空間大小。Java語言的八種基本數(shù)據(jù)類型有:byte字節(jié)型,占一個(gè)字節(jié)。short短整型

11、,占兩個(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é)。boolean型,表示邏輯值,有 true和false兩個(gè)值,分別占一個(gè)字節(jié)。2、簡(jiǎn)述&&與&的區(qū)別并舉例說明。如果使用“ &”在表達(dá)式之間進(jìn)行連接,那么無論任何情況, “&”兩邊的表達(dá)式都會(huì)參與計(jì)算。如果使用 “&&”進(jìn)行連接,當(dāng)“ &&”左邊的表達(dá)式為false,則不會(huì)執(zhí)行其右邊的表達(dá)式。例如定義int x = 2,y = 0;boolean b =

12、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í)行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í)現(xiàn)計(jì)算“1+3+5+7+99 "的值。 提示:1)使用循環(huán)語句實(shí)現(xiàn)自然數(shù)19

13、9的遍歷。2)在遍歷過程中,通過條件判斷當(dāng)前遍歷的數(shù)是否為奇數(shù),如果是就累加,否則不加。2、已知函數(shù)x + 3( x > 0 )y = -0( x = 0 )I 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類型的參數(shù)x,返回值為int類型。2)在方法中使用ifelse if.else語句針對(duì)x的值進(jìn)行三種情況的判斷。3)根據(jù)判斷結(jié)果分別執(zhí)行不同的表達(dá)式,并將結(jié)果賦予變量y。4)在方法的最后返回 y的值。5)在main方法中調(diào)用設(shè)計(jì)好的方法,傳入一個(gè)int型的值

14、,將方法的返回值打印。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)鍵字_new 來創(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)鍵字修飾的成

15、員變量被稱為 _靜態(tài)變量_,它可以被該類所有的實(shí)例對(duì)象共享。8、在一個(gè)類中,除了可以定義屬性、方法,還可以定義類,這樣的類被稱為_內(nèi)部類。9、在Java中,提供了一個(gè)avadoc 命令,用于將程序中的文檔注釋提取出來,生成 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、嚴(yán)明構(gòu)造方法時(shí),不能使用p

16、rivate關(guān)鍵子修飾。錯(cuò)4、類中static修飾的變量或方法,可以使用類名或?qū)ο蟮囊米兞吭L問。對(duì)5、方法內(nèi)部類中不能訪問外部類的成員變量。 三、選擇題1、類的定義必須包含在以下哪種符號(hào)之間?A、方括號(hào) B、花括號(hào) C、2、下面哪一個(gè)是正確的類的聲明?DA、 public void HH C、 public class void number3、在以下什么情況下,構(gòu)造方法會(huì)被調(diào)用?A、類定義時(shí)B、創(chuàng)建對(duì)象時(shí)4、下面對(duì)于構(gòu)造方法的描述,正確有哪些? A、方法名必須和類名相同錯(cuò)B雙引號(hào)D、圓括號(hào)()B、public class Move() D、 public class Car BC、調(diào)用對(duì)象

17、方法時(shí) D、使用對(duì)象的變量時(shí)(多選)ABCB、方法名的前面沒有返回值類型的聲明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)造方法中使用this互相調(diào)用6、下面哪些可以使用 static關(guān)鍵字修飾?(多選)AC(ACD)A、成員變量B、局部變量C、成員方法D、成員

18、內(nèi)部類7、關(guān)于內(nèi)部類,下面說法正確的是?(多選)ACD( ABCD )A、成員內(nèi)部類是外部類的一個(gè)成員,可以訪問外部類的其它成員B、外部類可以訪問成員內(nèi)部類的成員C、方法內(nèi)部類只能在其定義的當(dāng)前方法中進(jìn)行實(shí)例化D、靜態(tài)內(nèi)部類中可以定義靜態(tài)成員,也可以定義非靜態(tài)成員8、下面對(duì)于單例設(shè)計(jì)模式的描述,正確的是?(多選)BCD(ABCD )A、類中定義一個(gè)無參的構(gòu)造方法,并且聲明為私有B、在內(nèi)部創(chuàng)建一個(gè)該類的實(shí)例對(duì)象,使用靜態(tài)變量引用該實(shí)例對(duì)象C、使用private修飾靜態(tài)變量,禁止外界直接訪問D、定義靜態(tài)方法返回該類實(shí)例9、請(qǐng)先閱讀下面的代碼Dpublic class Test public Tes

19、t()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 static void main(String口 args) Test test = new Test(true);上面程序的運(yùn)行結(jié)果為下列哪一項(xiàng)?A、構(gòu)造方法一被調(diào)用了C、構(gòu)造方法三被調(diào)用了B、構(gòu)造方法二被調(diào)用

20、了D、以上三個(gè)選項(xiàng)之和Inner,需要在main()方法中創(chuàng)建Inner類實(shí)例對(duì)象,以下四種10、Outer類中定義了一個(gè)成員內(nèi)部類方式哪一種是正確的?DA、 Inner in = new Inner()C、 Outer.Inner in = new Outer.Inner();B、Inner in = new Outer.Inner();D、Outer.Inner in = new Outer().new Inner();四、程序分析題閱讀下面的程序,分析代碼是否能夠編譯通過,如果能編譯通過,請(qǐng)列出運(yùn)行的結(jié)果。否則請(qǐng)說明編 譯失敗的原因。代碼一:不能,secret是私有成員,只能類內(nèi)部訪問(

21、程序不能編譯通過,因?yàn)樵陬怉中的成員變量secret 用private修飾,所以在類Testi中無法訪問)class A private int secret = 5;public class Testi public static void main(String口 args) A a = new A();System.out.println(a.secret+); 代碼二:250(程序不能編譯通過,因?yàn)樵陟o態(tài)方法method()中不能訪問非靜態(tài)成員變量x。)public class Test2 int x = 50; static int y =200 ; public static vo

22、id method() 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 showName()System.out

23、.println(name); public static void main(String口 args) Inner inner = new Outer().new Inner(); System.out.println();五、簡(jiǎn)答題1、構(gòu)造方法和普通的成員方法有什么區(qū)別?構(gòu)造方法是類的一個(gè)特殊成員,它會(huì)在類實(shí)例化對(duì)象時(shí)被自動(dòng)調(diào)用。而普通方法只有在使用的時(shí)候才 會(huì)被調(diào)用。在定義構(gòu)造方法時(shí)要求方法名與類名相同、在方法名的前面沒有返回值類型的聲明、在方法中 不能使用return語句返回一個(gè)值2、單例設(shè)計(jì)模式具備哪些特點(diǎn)?單例模式可以保證在整個(gè)程序運(yùn)行期間針對(duì)該類只存在一個(gè)實(shí)

24、例對(duì)象。六、編程題1、請(qǐng)按照以下要求設(shè)計(jì)一個(gè)學(xué)生類Student,并進(jìn)行測(cè)試。要求如下:1) Student類中包含姓名、成績(jī)兩個(gè)屬性2)分別給這兩個(gè)屬性定義兩個(gè)方法,一個(gè)方法用于設(shè)置值,另一個(gè)方法用于獲取值3) Student類中定義一個(gè)無參的構(gòu)造方法和一個(gè)接收兩個(gè)參數(shù)的構(gòu)造方法,兩個(gè)參數(shù)分別為姓名和 成績(jī)屬性賦值4)在測(cè)試類中創(chuàng)建兩個(gè)Student對(duì)象,一個(gè)使用無參的構(gòu)造方法,然后調(diào)用方法給姓名和成績(jī)賦值,一個(gè)使用有參的構(gòu)造方法,在構(gòu)造方法中給姓名和成績(jī)賦值2、定義一個(gè)Father和Child類,并進(jìn)行測(cè)試。要求如下:1) Father類為外部類,類中定義一個(gè)私有的String類型的屬性n

25、ame, name的值為"zhangjun”。2) Child類為Father類的內(nèi)部類,其中定義一個(gè)introFather()方法,方法中調(diào)用 Father類的name屬性。3)定義一個(gè)測(cè)試類 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)接口中定義的全部一方法,否則該類就必須定義成_抽象類。_import 關(guān)鍵字。3、在程序開發(fā)中,要想將一個(gè)包中的類導(dǎo)入到當(dāng)前程序中

26、,可以使用4、一個(gè)類可以從其它的類派生出來,派生出來的類稱為子類,用于派生的類稱為 基類或者父類。5、 JDK中定義了大量的異常類,這些類都是.Exception 類的子類或者間接子類。6、定義一個(gè)Java類時(shí),如果前面加使用 丁inal 關(guān)鍵字修飾,那么該類不可以被繼承。7、如果子類想使用父類中的成員,可以通過關(guān)鍵字 _super 引用父類的成員。8、在Java語言中,所有的類都直接或間接繼承自.Object 類。9、異常的捕獲通常由try、catch兩部分組成,_try 代碼塊用來存放可能發(fā)生異常,_catch代碼塊用來處理產(chǎn)生的異常。10、在Java語言中,要想是將一個(gè)已編譯的類打包成j

27、ar文件,可以使用的命令是jar-cvf ,要想在命令行窗口運(yùn)行jar文件,可以使用的命令是 _java-jar。、判斷題1、抽象方法必須定義在抽象類中,所以抽象類中的方法都是抽象方法。錯(cuò)2、Java中被final關(guān)鍵字修飾的變量,不能被重新賦值。對(duì)3、不存在繼承關(guān)系的情況下,也可以實(shí)現(xiàn)方法重寫。錯(cuò)4、package聲明語句應(yīng)當(dāng)為 Java源文件中的第一條語句。對(duì)5、接口中只能定義常量和抽象方法。錯(cuò)()三、選擇題1、在類的繼承關(guān)系中,需要遵循以下哪個(gè)繼承原則?BA、多重 B、單一 C、雙重 D、不能繼承2、在Java語言中,以下哪個(gè)關(guān)鍵字用于在方法上聲明拋出異常?CA.tryB.catchC.

28、throwsD.throw3、關(guān)于super關(guān)鍵字以下說法哪些是正確的?(多選)ABD (ABC)A、super關(guān)鍵字可以調(diào)用父類的構(gòu)造方法B、super關(guān)鍵字可以調(diào)用父類的普通方法C、super與this不能同時(shí)存在于同一個(gè)構(gòu)造方法中D、super與this可以同時(shí)存在于同一個(gè)構(gòu)造方法中4、以下說法哪些是正確的?(多選)ABCDA、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è)修飾符修飾,該方法只能在本類被訪問?CA、public B

29、、 protected C、 privateD、default6、關(guān)于抽象類的說法哪些是正確的?(多選)ACA、抽象類中可以有非抽象方法。B、如果父類是抽象類,則子類必須重寫父類所有的抽象方法。C、不能用抽象類去創(chuàng)建對(duì)象。D、接口和抽象類是同一個(gè)概念。7、在Java中,要想讓一個(gè)類繼承另一個(gè)類,可以使用以下哪個(gè)關(guān)鍵字?CA、 inherits B、 implements C、 extends D、 modifies8、System類位于以下哪個(gè)包中?DA、java.io B、java.util C、java.awt D、java.lang9、已知類的繼承關(guān)系如下:Aclass Employee

30、;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、編譯運(yùn)行下面的程序,結(jié)果是什么?Bpublic class A public static void main(String口 args) B b = new B();b.test();void test() Sys

31、tem.out.print("A");博學(xué)谷一一讓IT教學(xué)更簡(jiǎn)單,讓IT學(xué)習(xí)更有效 class B extends A void test() super.test(); System.out.print("B"); A、產(chǎn)生編譯錯(cuò)誤B、代碼可以編譯運(yùn)行,并輸出結(jié)果 ABC、代碼可以編譯運(yùn)行,但沒有輸出D、編譯沒有錯(cuò)誤,但會(huì)產(chǎn)生運(yùn)行時(shí)異常四、分析題閱讀下面的程序,分析代碼是否能編譯通過,如果能編譯通過,請(qǐng)列出運(yùn)行的結(jié)果。如果不能編譯通過,請(qǐng)說明原因。代碼一:進(jìn)入catch代碼塊進(jìn)入finally代碼塊(程序編譯能通過, 這是因?yàn)閕nt x = 2 / 0

32、; System.out.println(x);這兩條語句使用了 try 塊,捕獲了程序因?yàn)槌?0而產(chǎn)生的異常情況, 之后程序會(huì)繼續(xù)向下執(zhí)行,輸出“進(jìn)入catch代碼塊”,“進(jìn)入finally代碼塊”。)public 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("

33、;進(jìn)入 finally 代碼塊"); 代碼二:不能,final修飾shout,不能被重寫(程序編譯不通過,這是因?yàn)樵诔绦蛑惺褂昧薴inal關(guān)鍵字修飾Animal類,使得Animal類不能被繼承。shout()方法中同樣使用了final關(guān)鍵字,使得該方法不能被重寫。)final class Animal public final void shout() / 程序代碼class Dog extends Animal public void shout() / 程序代碼 class Test02 public static void main(String args) 博學(xué)谷一一讓IT教

34、學(xué)更簡(jiǎn)單,讓IT學(xué)習(xí)更有效Dog dog=new Dog();代碼三:動(dòng)物叫!汪汪class Animal void 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

35、沒有實(shí)現(xiàn)Animal所有方法,Dog為抽象類不能創(chuàng)建對(duì)象(程序編譯不通過,因?yàn)?接口中定義的方法不能有方法體,所以定義的eat()方法是錯(cuò)誤的。接口中的方法必須在子類中全部實(shí)現(xiàn),由于run()方法在子類中并沒有重新實(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.

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

37、根據(jù)被引用子類對(duì)象的特性,程序會(huì)得到不 同的運(yùn)行效果。3、抽象類和接口的區(qū)別?在Java中,使用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è)包含兩

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

39、個(gè)double類型的參數(shù),返回一個(gè)double類 型的結(jié)果2) Square和Circle中實(shí)現(xiàn)了 Shape接口的area()抽象方法,分別求正方形和圓形的面積并返回在測(cè)試類中創(chuàng)建 Square和Circle對(duì)象,計(jì)算邊長(zhǎng)為 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

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

41、個(gè)線程 ,它們會(huì)交替執(zhí)行, 彼此間可以進(jìn)行_通信。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è)階段,分別是 _新建、就緒、_運(yùn)行、_阻塞、 和死亡。7、線程的優(yōu)先級(jí)用110之間

42、的整數(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(true)方法,該方法必須在_start()方法之前調(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、靜

43、態(tài)方法不能使用 synchronized關(guān)鍵字來修飾。錯(cuò)5、線程結(jié)束等待或者阻塞狀態(tài)后,會(huì)進(jìn)入運(yùn)行狀態(tài)。錯(cuò) 三、選擇題1、Thread類位于下列哪個(gè)包中?BA、java.ioB、java.langC、java.utilD、java.awt2、關(guān)于線程的創(chuàng)建過程,下面四種說法正確的有哪些?(多選)ACA、定義Thread類的子類,重寫Thread類的run()方法,創(chuàng)建該子類的實(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)建該類

44、實(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)建線程,下面說法正確的有哪些?(多選)ABCA、適合多個(gè)相同程序代碼的線程去處理同一個(gè)資源的情況B、把線程同程序代碼、數(shù)據(jù)有效的分離,很好的體現(xiàn)了面向?qū)ο蟮脑O(shè)計(jì)思想C、可以避免由于 Java的單繼承帶來的局限性D、編寫簡(jiǎn)單,可以不通過Thread類直接創(chuàng)建線程4、對(duì)于線程的生命周期,下面四種說法正確的有哪些?(多選)ABC (BC)A、調(diào)

45、用了線程的start()方法,該線程就進(jìn)入運(yùn)行狀態(tài)(就緒,還要獲得 CPU使用權(quán))B、線程的run()方法運(yùn)行結(jié)束或被未catch的InterruptedException等異常終結(jié),那么該線程進(jìn)入死亡狀態(tài)Thread對(duì)象,在沒有被垃圾回收器回收之前C、線程進(jìn)入死亡狀態(tài),但是該線程對(duì)象仍然是一個(gè)仍可以像引用其它對(duì)象一樣引用它D、線程進(jìn)入死亡狀態(tài)后,調(diào)用它的start()方法仍然可以重新啟動(dòng)5、對(duì)于死鎖的描述,下面四種說法正確有哪些?(多選)AB (ABD)A、B、C、D、當(dāng)兩個(gè)線程互相等待對(duì)方釋放同步鎖時(shí)會(huì)發(fā)生死鎖Java虛擬機(jī)沒有檢測(cè)和處理死鎖的措施一旦出現(xiàn)死鎖,程序會(huì)發(fā)生異常處于死鎖狀態(tài)的

46、線程處于阻塞狀態(tài),無法繼續(xù)運(yùn)行6、卜面四個(gè)選項(xiàng)中,哪些是線程進(jìn)入阻塞狀態(tài)的原因?(多選)ABCA、線程試圖獲取某個(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)?A、就緒狀態(tài)C、阻塞狀態(tài)B、運(yùn)行狀態(tài)D、死亡狀態(tài)8、在以下哪種情況下,線程進(jìn)入就緒狀態(tài)?A、線程調(diào)用了 sleep()方法時(shí)C、線程調(diào)用了 yield()方法時(shí)DB、線程調(diào)用了D、線程調(diào)用了9、卜面四個(gè)選項(xiàng)中,對(duì)線程同步的目的描述正確的有哪些?join

47、()方法(終止) notify()方法?(多選)AD (AB)A、鎖定資源,使同一時(shí)刻只有一個(gè)線程去訪問它,防止多個(gè)線程操作同一個(gè)資源引發(fā)錯(cuò)誤B、提高線程的執(zhí)行效率C、讓線程獨(dú)占一個(gè)資源D、讓多個(gè)線程同時(shí)使用一個(gè)資源10、對(duì)于wait()方法,下面說法正確的是?侈選)ABCDA、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é)果。如果

48、不能編譯通過,請(qǐng)說明原因。1 .代碼一:不能,RunHandler沒有繼承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(String args) 博學(xué)谷一一讓IT教學(xué)更簡(jiǎn)單,讓IT學(xué)習(xí)更有效Thread t = new Thr

49、ead(new RunHandler(); t.start(); 2 .代碼二:this is run (程序不能編譯通過,因?yàn)?Thread的子類A重寫的run()方法的訪問級(jí)別不能低 于父類run()方法的。訪問級(jí)別)public class A extends Thread protected void run() System.out.println("this is run()"); public static void main(String口 args) A a = new A();a.start(); 3 .代碼三:Exception (程序不能編譯通過,因

50、為同步方法中調(diào)用wait()方法的對(duì)象必須為同步鎖對(duì)象)public class Testprivate Object obj=new Object(); public synchronized void a() try obj.wait() ;改 this.wait() System.out.println("waiting"); catch (InterruptedException e) System.out.println("Exception"); public static void main(String口 args) new Test()

51、.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() /此處填空public void run() System.out.println("Thread is running"); public void go() start(1); public void start(int

52、i) 博學(xué)谷一一讓IT教學(xué)更簡(jiǎn)單,讓IT學(xué)習(xí)更有效五、簡(jiǎn)答題1、java中有幾種方法可以實(shí)現(xiàn)一個(gè)線程?請(qǐng)舉例說明。一種是繼承java.lang包下的Thread類,覆寫Thread類的run()方法,在run()方法中實(shí)現(xiàn)運(yùn)行在線程上 的代碼。new Thread() public void run().start();另一種就是實(shí)現(xiàn)java.lang.Runnable接口,同樣是在run()方法中實(shí)現(xiàn)運(yùn)行在線程上的代碼。 new Thread(new Runnable()public void run().start()2、sleep()和 wait()有什么區(qū)別?調(diào)用sleep()方法,正

53、在執(zhí)行的線程主動(dòng)讓出CPU去執(zhí)行其他線程,在sleep()方法指定的時(shí)間過后,CPU才會(huì)回到這個(gè)線程上繼續(xù)往下執(zhí)行,如果當(dāng)前線程進(jìn)入了同步鎖,sleep()方法并不會(huì)釋放鎖,即使當(dāng)前線程使用sleep()方法讓出了 CPU,但其它被同步鎖擋住了的線程也無法得到執(zhí)行。wait()在一個(gè)已經(jīng)進(jìn)入了同步鎖的線程內(nèi)進(jìn)行調(diào)用,讓當(dāng)前線程暫時(shí)讓出同步鎖,以便其它正在等待此鎖的線程可以得到同步鎖并運(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

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

55、a 中的操作日期的類有 _Date、_Calendar、DateFormat 等。3、在程序中若想取得一個(gè)Runtime實(shí)例,則可以調(diào)用 Runtime類的靜態(tài)方法getRnutime()。4、Math類中用于計(jì)算所傳遞參數(shù)平方根的方法是_sqrt()。5、Java中專門用于將日期格式化為字符串的類是_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.toString()的值為 _"edcba_"。二、判斷

溫馨提示

  • 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論