《Java基礎(chǔ)入門》_課后習(xí)題要點(diǎn)
《《Java基礎(chǔ)入門》_課后習(xí)題要點(diǎn)》由會員分享,可在線閱讀,更多相關(guān)《《Java基礎(chǔ)入門》_課后習(xí)題要點(diǎn)(37頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、博學(xué)谷一一讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效 《Java基礎(chǔ)入門》課后習(xí)題 第1章Java開發(fā)入門 一、填空題 1、 Java 的三大體系分另1J是 _JavaSE、 _JavaEE、 _JavaME。 2、Java程序的運(yùn)行環(huán)境簡稱之為 JRE。 3、編譯Java程序需要使用_javac 命令。 4、javac.exe和java.exe兩個可執(zhí)行程序存放在 JDK安裝目錄的bin 目錄下。 5、path 環(huán)境變量用來存儲 Java的編譯和運(yùn)行工具所在的路徑, 而_classpath 環(huán)境變量則用 來保存保存Java虛擬機(jī)要運(yùn)行的“ .class”文件路徑。 二、選擇題
2、 1、以下選項中,哪些屬于 JDK工具?(多選)ABCD A、Java編譯器 B、Java運(yùn)行工具 C、Java文檔生成工具 D、Java打包工具 2、Java屬于以下哪種語言? C A、機(jī)器語言 B、 匯編語言 C、高級語言 D、以上都不對 3、下面哪種類型的文件可以在 Java虛擬機(jī)中運(yùn)行? D A、.java B、.jre C、.exe D、.class 4、安裝好JDK后,在其bin目錄下有許多exe可執(zhí)行文件,其中java.exe命令的作用是以下哪一種? B A、Java文檔制作工具 B、Java解釋器 C、Java編譯器 D、Java啟動器 5、如果jdk的安裝路
3、徑為: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的特點(diǎn)。 2、簡述JRE與JDK的區(qū)別。 四、編程題 使用記事本編寫一個 HelloWorld程序,在dos命令行窗口編譯運(yùn)行。請按照題目的要求編寫程序并給 出運(yùn)行結(jié)果。 第2章Java編程基礎(chǔ) 一、填空題 1、Java中的程序代碼都必須在一個類中定義,類使用 __class 關(guān)鍵字來定義。
4、 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、在邏輯運(yùn)算符中,運(yùn)算符 一&―和—&& 用于表示邏輯與,__|和__||表示邏輯或。 7、若x = 2 ,則表達(dá)式(x + + )/3的值是__0—。 8、若int
5、 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表示的是一個十六進(jìn)制整數(shù)。對 3、continue語句只用于循環(huán)語句中,它的作用是跳出循環(huán)。錯 4、“/*…*/中可以嵌套“ //”注釋,但不能嵌套“ /*???*/”注釋。對 5、-5%3的運(yùn)算結(jié)果是2。錯 三、選擇題 1、以下選項中,哪些屬于合法的標(biāo)識
6、符?(多選) AD A、Hello_World B、class C、123username D、username123 2、關(guān)于方法重載的描述,以下選項中哪些是正確的?(多選)( AD) ABD A、方法名必須一致 B、返回值類型必須不同 C、參數(shù)個數(shù)必須一致 D、參數(shù)的個數(shù)或類型不一致 3、以下關(guān)于變量的說法錯誤的是? C A、變量名必須是一個有效的標(biāo)識符 B、變量在定義時可以沒有初始值 C、變量一旦被定義,在程序中的任何位置都可以被訪問 D、在程序中,可以將一個 byte類型的值賦給一個int類型的變量,不需要特殊聲明 4、以下選項中,switch語句判斷條件可以接收的
7、數(shù)據(jù)類型有哪些? (多選)ABCD A、 int B、 byte C、char D、 short 5、假設(shè)int x = 2,三元表達(dá)式 x>0?x+1:5的運(yùn)行結(jié)果是以下哪一個? C A、0 B、2 C、3 D、5 6、下面的運(yùn)算符中,用于執(zhí)行除法運(yùn)算是哪個? A A、/ B、\ C、% D、* 7、下列語句哪些屬于循環(huán)語句?(多選) AC A、for語句 B、if語句 C、while語句 D、switch語句 8、下面哪種寫法可以實(shí)現(xiàn)訪問數(shù)組 arr的第1個元素?A A、arr[0] B、arr(0) C、arr[1] D、arr(1) 9、以下哪個選項可以正確創(chuàng)建一個
8、長度為 3的二維數(shù)組? (B)C A、 new int [2][3]; B、 new int[3肛 C、 new int[][3]; D、 以上答案皆不對 10、請先閱讀下面的代碼。 int x = 1; int y = 2; if (x % 2 == 0) { y++; } else { y--; } System.out.println("y=" + y); 上面一段程序運(yùn)行結(jié)束時,變量 y的值為下列哪一項? A A、1 B、2 C、3 D、switch 語句 四、程序分析題 閱讀下面的程序,分析代碼是否能夠編譯通過,如果能編譯通過,請列出運(yùn)行的結(jié)果。否則請說明
9、編 譯失敗的原因。 代碼一 :b=7(編譯不通過。int值4和b相加時,由于變量 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是在最里層的代碼塊中定義的一個變量,只 有在那個代碼) public class Test02 { public st
10、atic 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 = 0; switch (x) {
11、 case 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--; } } } 五、簡答題 1、請列舉Java語言中的八種基本數(shù)據(jù)類型,并說
12、明每種數(shù)據(jù)類型所占用的空間大小。 Java語言的八種基本數(shù)據(jù)類型有: byte字節(jié)型,占一個字節(jié)。 short短整型,占兩個字節(jié)。int整型, 占4個字節(jié)。long長整型,占8個字節(jié)。float單精度浮點(diǎn)型,占4個字節(jié)。double雙精度浮點(diǎn)型,占8個 字節(jié)。char字符型,占兩個字節(jié)。 boolean型,表示邏輯值,有 true和false兩個值,分別占一個字節(jié)。 2、簡述&&與&的區(qū)別并舉例說明。 如果使用“ &”在表達(dá)式之間進(jìn)行連接,那么無論任何情況, “&”兩邊的表達(dá)式都會參與計算。如果使用 “&&”進(jìn)行連接,當(dāng)“ &&”左邊的表達(dá)式為false,則不會執(zhí)行其右邊的表達(dá)式。例如
13、定義 int x = 2,y = 0;
boolean b = x < y & x / 2 > 0 表達(dá)是會發(fā)生被 0除異常,因?yàn)閤 / y的表達(dá)式執(zhí)行了。 而boolean b = x < y & x / 2 > 0是不會出現(xiàn)這種異常的,因?yàn)?x 14、示:
1)使用循環(huán)語句實(shí)現(xiàn)自然數(shù) 1?99的遍歷。
2)在遍歷過程中,通過條件判斷當(dāng)前遍歷的數(shù)是否為奇數(shù),如果是就累加,否則不加。
2、已知函數(shù)
『x + 3 ( x > 0 )
y = - 0 ( x = 0 )
I x2 - 1 ( x < 0 )
請設(shè)計一個方法實(shí)現(xiàn)上面的函數(shù),根據(jù)傳入的值 x的不同,返回對應(yīng)的 y值。
提示:
1)定義一個static修飾符修飾的方法,方法接收一個 int類型的參數(shù)x,返回值為int類型。
2)在方法中使用if…else if..else語句針對x的值進(jìn)行三種情況的判斷。
3)根據(jù)判斷結(jié)果分別執(zhí)行不同的表達(dá)式,并將結(jié)果賦予變量 y。 15、
4)在方法的最后返回 y的值。
5)在main方法中調(diào)用設(shè)計好的方法,傳入一個 int型的值,將方法的返回值打印。
3、請編寫程序,實(shí)現(xiàn)對數(shù)組 {25,24,12,76,101,96,28}的排序。
提示:使用冒泡排序算法。
第3章面向?qū)ο螅ㄉ希?
一、填空題
1、面向?qū)ο蟮娜筇卣魇欠庋b性 _、_繼承性 和—多態(tài)性。
2、在Java中,可以使用關(guān)鍵字_new 來創(chuàng)建類的實(shí)例對象。
3、定義在類中的變量被稱為 —成員變量,定義在方法中的變量被稱為局部變量
4、面向?qū)ο蟪绦蛟O(shè)計的重點(diǎn)是 _類—的設(shè)計,―類 是用來創(chuàng)建對象的模板。
5、在非靜態(tài)成員方法中,可以使用關(guān)鍵字 _ 16、this__訪問類的其它非靜態(tài)成員。
6、當(dāng)一個對象被當(dāng)成垃圾從內(nèi)存中釋放時,它的 __finalize()方法會被自動調(diào)用。
7、被static關(guān)鍵字修飾的成員變量被稱為 _靜態(tài)變量_,它可以被該類所有的實(shí)例對象共享。
8、在一個類中,除了可以定義屬性、方法,還可以定義類,這樣的類被稱為 _內(nèi)部類。
9、在Java中,提供了一個」avadoc 命令,用于將程序中的文檔注釋提取出來,生成 HTML格式
的幫助文檔。
10、所謂類的封裝是指在定義一個類時,將類中的屬性私有化,即使用 _private 關(guān)鍵字來修飾。
、判斷題
1、在定義一個類的時候,如果類的成員被 private 17、所修飾,該成員不能在類的外部被直接訪問。對
2、Java中的每個類都至少有一個構(gòu)造方法,一個類中如果沒有定義構(gòu)造方法,系統(tǒng)會自動為這個類 創(chuàng)建一個默認(rèn)的構(gòu)造方法。對
3、嚴(yán)明構(gòu)造方法時,不能使用 private關(guān)鍵子修飾。錯
4、類中static修飾的變量或方法,可以使用類名或?qū)ο蟮囊米兞吭L問。對
5、方法內(nèi)部類中不能訪問外部類的成員變量。 三、選擇題
1、類的定義必須包含在以下哪種符號之間?
A、方括號[] B、花括號{} C、
2、下面哪一個是正確的類的聲明? D
A、 public void HH {…}
C、 public class void number{}
18、3、在以下什么情況下,構(gòu)造方法會被調(diào)用?
A、類定義時 B、創(chuàng)建對象時
4、下面對于構(gòu)造方法的描述,正確有哪些? A、方法名必須和類名相同
錯
B
雙引號D、圓括號()
B、public class Move() {…}
D、 public class Car {…}
B
C、調(diào)用對象方法時 D、使用對象的變量時
(多選)ABC
B、方法名的前面沒有返回值類型的聲明
C、在方法中不能使用 return語句返回一個值
D、當(dāng)定義了帶參數(shù)的構(gòu)造方法,系統(tǒng)默認(rèn)的不帶參數(shù)的構(gòu)造方法依然存在
5、使用this調(diào)用類的構(gòu)造方法,下面的說法正確的是? (多選)ACD (ABCD) 19、
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ò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)前方法中進(jìn)行實(shí)例化
20、
D、靜態(tài)內(nèi)部類中可以定義靜態(tài)成員,也可以定義非靜態(tài)成員
8、下面對于單例設(shè)計模式的描述,正確的是? (多選)BCD(ABCD )
A、類中定義一個無參的構(gòu)造方法,并且聲明為私有
B、在內(nèi)部創(chuàng)建一個該類的實(shí)例對象,使用靜態(tài)變量引用該實(shí)例對象
C、使用private修飾靜態(tài)變量,禁止外界直接訪問
D、定義靜態(tài)方法返回該類實(shí)例
9、請先閱讀下面的代碼 D
public class Test {
public Test(){
System.out.println(" }
構(gòu)造方法一被調(diào)用了
");
public Test(int x){
this();
System. 21、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é)果為下列哪一項?
A、構(gòu)造方法一被調(diào)用了
C、構(gòu)造方法三被調(diào)用了
B、構(gòu)造方法二被調(diào)用了
D、以上三個選項之和
Inner,需要在main()方法中創(chuàng)建Inner類實(shí)例對象,以下四種
10、Out 22、er類中定義了一個成員內(nèi)部類
方式哪一種是正確的? D
A、 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();
四、程序分析題
閱讀下面的程序,分析代碼是否能夠編譯通過,如果能編譯通過,請列出運(yùn)行的結(jié)果。否則請說明編 譯失敗的原因。
代碼一:不能,secret是私有成員,只能類內(nèi)部訪問(程序不能編譯通過,因?yàn)樵陬怉中的成員變量secret 用priva 23、te修飾,所以在類 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 void m 24、ethod() {
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(){
Syst 25、em.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)造方法是類的一個特殊成員,它會在類實(shí)例化對象時被自動調(diào)用。而普通方法只有在使用的時候才 會被調(diào)用。在定義構(gòu)造方法時要求方法名與類名相同、在方法名的前面沒有返回值類型的聲明、在方法中 不能使用return語句返回一個值
2、單例設(shè)計模式具備哪些特點(diǎn)?
26、
單例模式可以保證在整個程序運(yùn)行期間針對該類只存在一個實(shí)例對象。
六、編程題
1、請按照以下要求設(shè)計一個學(xué)生類 Student,并進(jìn)行測試。
要求如下:
1) Student類中包含姓名、成績兩個屬性
2)分別給這兩個屬性定義兩個方法,一個方法用于設(shè)置值,另一個方法用于獲取值 ^
3) Student類中定義一個無參的構(gòu)造方法和一個接收兩個參數(shù)的構(gòu)造方法,兩個參數(shù)分別為姓名和 成績屬性賦值
4)在測試類中創(chuàng)建兩個 Student對象,一個使用無參的構(gòu)造方法,然后調(diào)用方法給姓名和成績賦值,
一個使用有參的構(gòu)造方法,在構(gòu)造方法中給姓名和成績賦值
2、定義一個Father和Chil 27、d類,并進(jìn)行測試。
要求如下:
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ù)我們稱為繼承 。
2、一個類如果實(shí)現(xiàn)一個接口,那么它就需要實(shí)現(xiàn) 28、接口中定義的全部 一方法,否則該類就必須定
義成_抽象類。
_import 關(guān)鍵字。
3、在程序開發(fā)中,要想將一個包中的類導(dǎo)入到當(dāng)前程序中,可以使用
4、一個類可以從其它的類派生出來,派生出來的類稱為 —子類,用于派生的類稱為 —基類
或者—父類。
5、 JDK中定義了大量的異常類,這些類都是 .Exception 類的子類或者間接子類。
6、定義一個Java類時,如果前面加使用 丁inal 關(guān)鍵字修飾,那么該類不可以被繼承。
7、如果子類想使用父類中的成員,可以通過關(guān)鍵字 __super 引用父類的成員。
8、在Java語言中,所有的類都直接或間接繼承自 .Object 類 29、。
9、異常的捕獲通常由 try、catch兩部分組成,_try 代碼塊用來存放可能發(fā)生異常, _catch
代碼塊用
來處理產(chǎn)生的異常。
10、在Java語言中,要想是將一個已編譯的類打包成 jar文件,可以使用的命令是 jar-cvf ,要
想在命令行窗口運(yùn)行jar文件,可以使用的命令是 __java-jar。
、判斷題
1、抽象方法必須定義在抽象類中,所以抽象類中的方法都是抽象方法。錯
2、Java中被final關(guān)鍵字修飾的變量,不能被重新賦值。對
3、不存在繼承關(guān)系的情況下,也可以實(shí)現(xiàn)方法重寫。錯
4、package聲明語句應(yīng)當(dāng)為 Java源文件中的第一條語句。對 30、
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)造方法
B、super關(guān)鍵字可以調(diào)用父類的普通方法
C、super與this不能同時存在于同一個構(gòu)造方法中
D、super與this可以同時存在于同一個構(gòu)造方法中
31、4、以下說法哪些是正確的?(多選) ABCD
A、Java語言中允許一個類實(shí)現(xiàn)多個接口
B、Java語言中不允許一個類繼承多個類
C、Java語言中允許一個類同時繼承一個類并實(shí)現(xiàn)一個接口
D、Java語言中允許一個接口繼承一個接口
5、類中的一個成員方法被下面哪個修飾符修飾,該方法只能在本類被訪問? C
A、public B、 protected C、 private D、default
6、關(guān)于抽象類的說法哪些是正確的?(多選) AC
A、抽象類中可以有非抽象方法。
B、如果父類是抽象類,則子類必須重寫父類所有的抽象方法。
C、不能用抽象類去創(chuàng)建對象。
D、接口和抽象類 32、是同一個概念。
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
class Employee;
class Manager extends Employee;
class Director extends Employee; 則以下語句能通過編譯的有哪些?
A、 Employee e=new 33、Manager。; B、 Director d=new Manager。;
C、 Director d=new Employee。; D、Manager m=new Director();
10、編譯運(yùn)行下面的程序,結(jié)果是什么? B
public class A {
public static void main(String口 args) {
B b = new B();
b.test();
void test() {
System.out.print("A");
博學(xué)谷一一讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效 }
}
class B extends A { void 34、 test() { super.test(); System.out.print("B");
} }
A、產(chǎn)生編譯錯誤 B、代碼可以編譯運(yùn)行,并輸出結(jié)果 AB
C、代碼可以編譯運(yùn)行,但沒有輸出 D、編譯沒有錯誤,但會產(chǎn)生運(yùn)行時異常
四、分析題
閱讀下面的程序,分析代碼是否能編譯通過,如果能編譯通過,請列出運(yùn)行的結(jié)果。如果不能編譯通
過,請說明原因。
代碼一:進(jìn)入catch代碼塊
進(jìn)入finally代碼塊(程序編譯能通過, 這是因?yàn)閕nt x = 2 / 0; System.out.println(x);這兩條語句使用了 try 塊,捕獲了程序因?yàn)槌?0而產(chǎn)生的異常情況, 之后 35、程序會繼續(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(" 進(jìn)入 finally 代碼塊");
} } }
代碼二:不能,final修飾shout,不能 36、被重寫(程序編譯不通過,這是因?yàn)樵诔绦蛑惺褂昧?final關(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教學(xué)更簡單, 37、讓IT學(xué)習(xí)更有效
Dog dog=new Dog();
}
}
代碼三:動物叫!
汪汪……
class Animal {
void shout() {
System.out.println(" 動物叫!");
}
}
class Dog extends Animal {
void shout() {
super.shout();
System.out.println(" 汪汪 ");
}
}
public class Test03 {
public static void main(String口 args) {
Animal animal = new 38、 Dog();
animal.shout();
代碼四:不能,Dog沒有實(shí)現(xiàn)Animal所有方法,Dog為抽象類不能創(chuàng)建對象(程序編譯不通過,因?yàn)?接口中定義的方法不能有方法體,所以定義的 eat()方法是錯誤的。接口中的方法必須在子類中全部實(shí)現(xiàn),
由于run()方法在子類中并沒有重新實(shí)現(xiàn),所以這也是錯誤的。 )
interface Animal {
void breathe();
void run();
void eat(){};
}
class Dog implements Animal {
public void breathe() {
System.out.pri 39、ntln("I m breathing")
} public void eat() { System.out.println("I m eathing")
} } public class test04 {
public static void main(String [] args) {
Dog dog = new Dog();
dog.breathe();
dog.eat();
}
}
五、簡答題
1、什么是方法重寫?
在繼承關(guān)系中,子類的方法與父類的某一方法具有相同的方法名、返回類型和參數(shù)列表,則稱子類的 該方法重寫(覆蓋)父類的方法。
2、什么是多態(tài)?
多 40、態(tài)意味著一個對象有著多種形態(tài),可以在特定的情況下,表現(xiàn)不同的狀態(tài),從而對應(yīng)著不同的屬性和方 法。簡單的說,多態(tài)就是使用父類類型的變量引用子類對象,根據(jù)被引用子類對象的特性,程序會得到不 同的運(yùn)行效果。
3、抽象類和接口的區(qū)別?
在Java中,使用abstract關(guān)鍵字修飾的類稱之為抽象類。抽象類是不能被實(shí)例化的,通常需要寫一個 子類來繼承抽象類,同時實(shí)例化子類來獲得該類的對象。抽象類通常用于表示一種抽象的概念。 接口可以說是一種特殊的抽象類,接口中只能定義常量和抽象方法。由于接口的特殊性,在定義 時需要使用interface關(guān)鍵字。
六、編程題
請按照題目的要求編寫程序并給出運(yùn)行結(jié)果。 41、
1、設(shè)計一個學(xué)生類 Student和它的一個子類 Undergraduate,要求如下:
1) Student類有name(姓名)、和age(年齡)屬性,一個包含兩個參數(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對象和Undergr 42、aduate對象,調(diào)用它們的 show()。
2、設(shè)計一個 Shape接口和它的兩個實(shí)現(xiàn)類 Square和Circle ,要求如下:
1) Shape接口中有一個抽象方法 area(),方法接收有一個double類型的參數(shù),返回一個double類 型的結(jié)果
2) Square和Circle中實(shí)現(xiàn)了 Shape接口的area()抽象方法,分別求正方形和圓形的面積并返回
在測試類中創(chuàng)建 Square和Circle對象,計算邊長為 2的正方形面積和半徑為 3的圓形面積
3、自定義一個異常類 NoThisSoundException和Player類,在Player的play()方法中使用自定 43、義異常,
要求入下:
1) NoThisSongException繼承Exception類,類中有一個無參和一個接收一個 String類型參數(shù)的
構(gòu)造方法,構(gòu)造方法中都使用 super關(guān)鍵字調(diào)用父類的構(gòu)造方法。
2) Player類中定義一個play(int index)方法,方法接收一個int類型的參數(shù),表示播放歌曲的索 弓I,當(dāng)index>10時,paly()方法用throw關(guān)鍵字拋出 NoThisSongException異常,創(chuàng)建異常對 象時,調(diào)用有參的構(gòu)造方法,傳入“您播放的歌曲不存在” 。
3)在測試類中創(chuàng)建 Player對象,并調(diào)用play()方法測試自定義的 NoTh 44、isSongException異常,使 用try…catch語句捕獲異常,調(diào)用NoThisSongException的getMessage()方法打印出異常信息。
第5章多線程
、填空題
1、一個應(yīng)用程序中有多條并發(fā)執(zhí)行的線索,每條線索都被稱作一個線程 ,它們會交替執(zhí)行, 彼此
間可以進(jìn)行_通信。
2、在實(shí)現(xiàn)多線程的程序時有兩種方式, 一是通過繼_Thread 承類,二是通過實(shí)現(xiàn) Runnable
接口。
3、yield()方法只能讓 相同優(yōu)先級或者更高優(yōu)先級 、處于—就緒 狀態(tài)的線程獲得運(yùn)行的機(jī)會。
4、在Java語言中,同步方法需要用到關(guān)鍵字 _synchronized., 45、對于同步方法而言無需指定同步鎖,
它的同步
鎖是方法所在的_對象,也就是_this(關(guān)鍵字)。
5、在多任務(wù)系統(tǒng)中,每個獨(dú)立執(zhí)行的程序稱之為 _線程,也就是“正在運(yùn)行的程序”。
6、線程的整個生命周期分為五個階段,分別是 _新建、就緒、_運(yùn)行、_阻塞、 和死亡。
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()、_notify 46、ALL()方法。
10、要將某個線程設(shè)置為后臺線程,需要調(diào)用該線程的 _setDaemon(true)方法,該方法必須在
_start()方法之前調(diào)用。 二、判斷題
1、當(dāng)我們創(chuàng)建一個線程對象時,該對象表示的線程就立即開始運(yùn)行。錯
2、如果前臺線程全部死亡,后臺線程也會自動死亡。對
3、同步代碼塊中的鎖對象可以是任意類型的對象。對
4、靜態(tài)方法不能使用 synchronized關(guān)鍵字來修飾。錯
5、線程結(jié)束等待或者阻塞狀態(tài)后,會進(jìn)入運(yùn)行狀態(tài)。錯 三、選擇題
1、Thread類位于下列哪個包中? B
A、java.io B、java.lang C、java.util D、jav 47、a.awt
2、關(guān)于線程的創(chuàng)建過程,下面四種說法正確的有哪些? (多選)AC
A、定義Thread類的子類,重寫Thread類的run()方法,創(chuàng)建該子類的實(shí)例對象, 調(diào)用對象的start()
方法
B、定義Thread類的子類,重寫Thread類的run()方法,創(chuàng)建該子類的實(shí)例對象,調(diào)用對象的 run()
方法
C、定義一個實(shí)現(xiàn) Runnable接口的類并實(shí)現(xiàn)run()方法,創(chuàng)建該類實(shí)例對象,將其作為參數(shù)傳遞給 Thread類的構(gòu)造方法來創(chuàng)建 Thread對象,調(diào)用 Thread對象的start()方法
D、定義一個實(shí)現(xiàn) Runnable接口的類并實(shí)現(xiàn)run()方法,創(chuàng)建該類 48、對象,然后調(diào)用 run()方法
3、對于通過實(shí)現(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()方法,該線程就進(jìn)入運(yùn)行狀態(tài) (就緒,還要獲得 CPU使用權(quán))
B、線程的run()方法運(yùn)行結(jié)束或被未 catch的Interrup 49、tedException等異常終結(jié),那么該線程進(jìn)入死
亡狀態(tài)
Thread對象,在沒有被垃圾回收器回收之前
C、線程進(jìn)入死亡狀態(tài),但是該線程對象仍然是一個
仍可以像引用其它對象一樣引用它
D、線程進(jìn)入死亡狀態(tài)后,調(diào)用它的 start()方法仍然可以重新啟動
5、
對于死鎖的描述,下面四種說法正確有哪些?
(多選)AB (ABD)
A、
B、
C、
D、
當(dāng)兩個線程互相等待對方釋放同步鎖時會發(fā)生死鎖
Java虛擬機(jī)沒有檢測和處理死鎖的措施
一旦出現(xiàn)死鎖,程序會發(fā)生異常
處于死鎖狀態(tài)的線程處于阻塞狀態(tài),無法繼續(xù)運(yùn)行
6、
卜面四個選項中,哪些是線程進(jìn)入阻 50、塞狀態(tài)的原因?
(多選)ABC
A、線程試圖獲取某個對象的同步鎖,而該鎖被其它線程持有
B、線程調(diào)用了另一個線程的 join()方法
C、當(dāng)線程調(diào)用了一個阻塞式的 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()方法時
C、線程調(diào)用了 yield()方法時
D
B、線程調(diào)用了
D、線程調(diào)用了
9、
卜面四個選項中,對線程同步的目的描述正 51、確的有哪些?
join()方法(終止) notify()方法??
(多選)AD (AB)
A、鎖定資源,使同一時刻只有一個線程去訪問它,防止多個線程操作同一個資源引發(fā)錯誤
B、提高線程的執(zhí)行效率
C、讓線程獨(dú)占一個資源
D、讓多個線程同時使用一個資源
10、對于wait()方法,下面說法正確的是? 侈選)ABCD
A、wait()方法的調(diào)用者是同步鎖對象
B、wait()方法使線程進(jìn)入等待狀態(tài)
C、調(diào)用同一鎖對象的 notify()或notifyAll()方法可以喚醒調(diào)用 wait()方法等待的線程
D、調(diào)用wait()方法的線程會釋放同步鎖對象 四、程序分析題
閱 52、讀下面的程序,分析代碼是否能編譯通過,如果能編譯通過,請列出運(yùn)行的結(jié)果。如果不能編譯通
過,請說明原因。
1 .代碼一:不能,RunHandler沒有繼承Thread,不能用Thread創(chuàng)建對象(程序不能編譯通過,因?yàn)?
RunHandler類沒有實(shí)現(xiàn) Runnable接口,因此RunHandler的實(shí)例對象不能作為參數(shù)傳遞給 Thread的構(gòu)造方
法。)
class RunHandler {
public void run(){
System.out.println("run");
}
}
public class Test {
public static void ma 53、in(String [] args) {
博學(xué)谷一一讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效
Thread t = new Thread(new RunHandler()); t.start();
} }
2 .代碼二:this is run (程序不能編譯通過,因?yàn)?Thread的子類A重寫的run()方法的訪問級別不能低 于父類run()方法的。訪問級別)
public class A extends Thread{ protected void run() {
System.out.println("this is run()"); }
public static void 54、main(String口 args) { A a = new A();
a.start(); }
}
3 .代碼三:Exception (程序不能編譯通過,因?yàn)橥椒椒ㄖ姓{(diào)用 wait()方法的對象必須為同步鎖對象 )
public class Test{
private Object obj=new Object(); public synchronized void a(){ try {
obj.wait() ;改 this.wait() System.out.println("waiting");
} catch (InterruptedException e) { Sys 55、tem.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(String口 args) { Thread t = new Thread(new B()); __t.start() // 此處填空
}
public void run() 56、 {
System.out.println("Thread is running"); } public void go() {
start(1); }
public void start(int i) {
博學(xué)谷一一讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效
}
}
五、簡答題
1、java中有幾種方法可以實(shí)現(xiàn)一個線程?請舉例說明。
一種是繼承java.lang包下的Thread類,覆寫Thread類的run()方法,在run()方法中實(shí)現(xiàn)運(yùn)行在線程上 的代碼。
new Thread() {
public void run(){}
}.start();
另一種就是實(shí) 57、現(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()方法,正在執(zhí)行的線程主動讓出 CPU去執(zhí)行其他線程,在 sleep()方法指定的時間過后, CPU
才會回到這個線程上繼續(xù)往下執(zhí)行,如果當(dāng)前線程進(jìn)入了同步鎖, sleep()方法并不會釋放鎖,即使當(dāng)前線
程使用sleep()方法讓出了 CPU,但其它被同步鎖擋住了的線程也無法得到執(zhí)行。 wait()在一個已經(jīng)進(jìn) 58、入了
同步鎖的線程內(nèi)進(jìn)行調(diào)用, 讓當(dāng)前線程暫時讓出同步鎖, 以便其它正在等待此鎖的線程可以得到同步鎖并
運(yùn)行。當(dāng)其它線程調(diào)用了 notify()方法后,調(diào)用 wait()方法的線程就會解除 wait狀態(tài),當(dāng)再次獲得同步鎖
后,程序可以繼續(xù)向下執(zhí)行。
六、編程題
請按照題目的要求編寫程序并給出運(yùn)行結(jié)果。
1、通過繼承Thread類的方式創(chuàng)建兩個線程,在 Thread構(gòu)造方法中指定線程的名字,并將這兩個線程
的名字打印出來。
2、通過實(shí)現(xiàn)Runnable接口的方式創(chuàng)建一個新線程,要求 main線程才T印100此次"main”,新線程打
印 50 次"new"。
3、模擬傳智播客 59、的三個老師同時分發(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、DateFormat 等。
3、在程序中若想取得一個 Runtime實(shí)例,則可以調(diào)用 Runtime類的靜態(tài)方法getRnutime()。
4、Math類中用于計算所傳遞參數(shù)平 60、方根的方法是 _sqrt()。
5、Java中專門用于將日期格式化為字符串的類是 _DateFormat。
6、Math類中有兩個靜態(tài)常量 PI和E,分別代表數(shù)學(xué)常量 _兀 和_e―。
7、Java中的用于產(chǎn)生隨機(jī)數(shù)的類是 _Random,它位于java.util 包中。
8、String類中用于返回字符串字符個數(shù)的方法是 _length()。
9、System類中所提供的屬性和方法都是 _靜態(tài)―的,想要引用這些屬性和方法,直接使用 System類
調(diào)用即可。
10、已知 sb 為 StringBuffer 的一個實(shí)例,且 sb.toString()的值為"abcde ", 則執(zhí) 61、行 sb. reverse。后, sb.toString()的值為 _"edcba_"。
二、判斷題
1、String對象和StringBuffer對象都是字符串變量,創(chuàng)建后都可以修改。錯
2、用運(yùn)算符“==”比較字符串對象時,如果兩個字符串的值相同,結(jié)果為 true。錯
3、System類中的currentTimeMillis()方法返回一個long類型的值。對
4、Date、Calendar 以及 DateFormat 類都位于 java.util 包中。錯 分另1J java.util.Date java.util.Calendar
java.text.DateFormat
62、
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.length);
程序執(zhí)行后,打印的結(jié)果是幾?
A、2個 B、 3個 C、4個 D、5個
2、以下都是Math類的常用方法,其中用于計算絕對值的方法是哪個? C
A、 63、ceil() B、floor() C、abs() D、random()
3、Random對象能夠生成以下哪種類型的隨機(jī)數(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]之間的隨機(jī)整數(shù)可以使用以下哪個表達(dá)式? B
A. (int) 64、(20+Math.random()*97)
B. 20+(int)(Math.random()*980)
C. (int)Math.random()*999
D. 20+(int)Math.random()*980
7、以下Math類的方法中,-4.4通過哪個方法運(yùn)算后,結(jié)果為 -5.0? D(C)
A. round()四舍五入 B. min() C. floor()小于參數(shù)最大整數(shù) D. ceil()大于參數(shù)最小整數(shù)
8、下面的程序段執(zhí)行后,輸出的結(jié)果是以下哪個選項? A
StringBuffer buf=new StringBuffer("Beijing2008");
bu 65、f.insert(7,"@");
System.out.println(buf.toString());
A、Beijing@2008 B、@Beijing2008 C、Beijing2008@ D、Beijing#2008
9、閱讀下面的程序:A
public class test {
public static void main(String args[]) {
int i;
float f = 2.3f;
double d = 2.7;
i = ((int)Math.ceil(f)) * ((int)Math.round(d));
System.out.printl 66、n(i); }
}
程序執(zhí)行后,運(yùn)行結(jié)果為以下哪個選項?
A、9 B、5 C、6 D、6.1
10、先閱讀下面的程序片段: B
String str1=new String("java");
String str2=new String("java");
StringBuffer str3=new StringBuffer("java");
對于上述定義的變量,以下表達(dá)式的值為 true的是哪個?
A、str1==str2; B、str1.equals(str2); C、str1==str3; D、以上都不對 四、程序分析題。
閱讀下面的程序,分析代碼是否能編譯通過,如果能編譯通過,請列出運(yùn)行的結(jié)果。如果不能編譯通 過,請說明原因。
代碼一:5
7.0
-8.0
-5
8.1
-6.1
public class A {
public static void main(String口 args) {
System.out.println(Math.abs(-5));
System.out.println(Math.ceil(6.6));
S
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中西方家庭教育的對比ppt課件
- 《運(yùn)籌學(xué)教程》第五版運(yùn)籌學(xué)6對策論矩陣對策課件
- (部編版)統(tǒng)編版四年級語文下冊第2課《鄉(xiāng)下人家》ppt課件
- 全等三角形1--公開課一等獎ppt課件
- 《會跳舞樹葉娃娃》課件
- 9兒童詩兩首_人教版五年級的語文下冊課件
- 綠色植物是食物之源(我的課件)0
- 河南專版2022春八年級語文下冊第四單元16慶祝奧林匹克運(yùn)動復(fù)興25周年習(xí)題課件新人教版
- 全國xx杯說課大賽機(jī)械類一等獎作品:鉗工車模的制作說課ppt課件
- 六年級下冊數(shù)學(xué)ppt課件-總復(fù)習(xí)(1)數(shù)的認(rèn)識-整數(shù)∣北師大版
- 牛頓第二定律優(yōu)秀完整公開課ppt課件
- 調(diào)脂與卒中防治課件
- 點(diǎn)到平面的距離課件
- 聚焦新醫(yī)改形勢下的醫(yī)院發(fā)展戰(zhàn)略
- 四肢血管超聲基礎(chǔ)