JAVA大學(xué)實(shí)用教程(第三版)課后習(xí)題答案電子工業(yè)出版社_第1頁(yè)
JAVA大學(xué)實(shí)用教程(第三版)課后習(xí)題答案電子工業(yè)出版社_第2頁(yè)
JAVA大學(xué)實(shí)用教程(第三版)課后習(xí)題答案電子工業(yè)出版社_第3頁(yè)
JAVA大學(xué)實(shí)用教程(第三版)課后習(xí)題答案電子工業(yè)出版社_第4頁(yè)
JAVA大學(xué)實(shí)用教程(第三版)課后習(xí)題答案電子工業(yè)出版社_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第一章 Java語(yǔ)言概述2.“java編譯器將源文件編譯為的字節(jié)碼文件是機(jī)器碼”這句話正確嗎?答:不正確3. java應(yīng)用程序的主類必須含有怎樣的方法?答:含有main方法4?!癹ava應(yīng)用程序必須有一個(gè)類是public類”這句話正確嗎?答;不正確,只能有一個(gè)public類5?!癹ava Applet程序的主類必須是public類”這句話正確嗎?答:正確,因?yàn)閖ava Applet主類必須是Applet類的子類并且是public的類6。請(qǐng)敘述java源程序的命名規(guī)則。答:與public的類同名。7。源文件生成的字節(jié)碼文件在運(yùn)行時(shí)都加載到內(nèi)存中嗎?答:非也,動(dòng)態(tài)隨需要運(yùn)行才加載。8. 面向?qū)ο蟮?/p>

2、程序設(shè)計(jì)語(yǔ)言有那些基本特征?答:封裝;繼承;多態(tài)性。9. 在Java程序中有多個(gè)類文件時(shí),用Java命令應(yīng)該運(yùn)行那個(gè)類?答:具有main方法的類第二章 基本數(shù)據(jù)類型和數(shù)組4。下列哪些語(yǔ)句是錯(cuò)的?Int x=120;Byte b=120;b=x;答:B=x;錯(cuò)應(yīng)為 b=(byte)x5。下列哪些語(yǔ)句是錯(cuò)的?答:y=d;錯(cuò),應(yīng)y=(float)d6。下列兩個(gè)語(yǔ)句是等價(jià)的嗎?Char x=97;Char x=a;答:是等價(jià)的。7。下列system.out.printf語(yǔ)句輸出結(jié)果是什么?Int a=97;Byte b1=(byte)128;Byte b2=(byte)(-129);System.ou

3、t.printf(“%c,%d,%d”,a,b1,b2);如果輸出語(yǔ)句改為:System.out.printf(“%d,%d,%d”,a,b1,b2);輸出什么?答:輸出a , -128, 127修改后輸出 97,-128,1278. 數(shù)組是基本數(shù)據(jù)類型嗎?怎樣獲取數(shù)組的長(zhǎng)度?9。假設(shè)有兩個(gè)int類型數(shù)組:Int a=new int10;Int b=new int8; b=a;A0=100;B0的值一定是100嗎?答;一定,因?yàn)閍數(shù)組與b數(shù)組引用相同。10。下列兩個(gè)語(yǔ)句的作用等價(jià)嗎?Int a=1,2,3,4,5,6,7,8;Int a=new int8;答:不等價(jià),前者有初值,后者指分配空間

4、。初值數(shù)組元素為011.有語(yǔ)句: int a=1,2,3,b=4,5; a=b; 求a0=? b1=? 為什么?答: a0=4 ; b1=5 因?yàn)橛邢嗤囊?,同指向b.12. Java語(yǔ)言使用_編碼,每個(gè)字符占_字節(jié)_byte位Unicode 2 16第3章 運(yùn)算符、表達(dá)式與語(yǔ)句 1。下列語(yǔ)句輸出的結(jié)果是什么?Int a=100, x,y;X=+a;Y=a-ntf(“%d, %d,%d”,x,y,a);答:101,101,1002。下列語(yǔ)句那些有錯(cuò)誤?Int x=0;X=5.0/2;Float y=12.5F;y=5.0/2;答:x=5.0/2; 錯(cuò)。3。下列語(yǔ)句那些有錯(cuò)?Byte x=32

5、;Char c=a;Int n=c-x; c=c-x;答:c=c-x;錯(cuò) 應(yīng)為 int類型。4下列語(yǔ)句正確的是A.表達(dá)式“12+56>34”的值是trueB.表達(dá)式“12+56|34”是非法表達(dá)式C.表達(dá)式“x+y=12”是非法表達(dá)式D.表達(dá)式“12+56>34”的值是13答: (A, C )5。對(duì)于整數(shù)m, m<<1的結(jié)果一定是2m嗎?答:不一定,高位有損失時(shí),不是2mInt m=120, n=240;那么mm=?; mnn=?答:mm=0; mnn=1207.下列System.out.printf語(yǔ)句輸出的結(jié)果是什么?Int x=10, y=10, z=10;If(

6、x>9)y=100;Z=200;Else y=-100; z=-200;System.out.printf(“%d,%d,%d”,x,y,z);輸出: 10,100,-2008.下列for語(yǔ)句輸出結(jié)果是什么?For(int i=1; i<=4; i+)Switch(i)Case 1: System.out.printf(“%c”,a);Case 2: System.out.printf(“%c”,b);Break;Case 3: System.out.printf(“%c”,c);tf(“%c”,d);Break; 輸出:a,b, b,c,d,d9. 下列System.out.pr

7、intf語(yǔ)句輸出的結(jié)果是什么?Char a=a,b,c,d,e;For(i=0; i<=a.length/2; i+) char c=ai; ai=aa.length-(i+1); a a.length-(i+1)=c;System.out.printf(“%c%c%c%c%c”a0,a1,a2,a3,a4);輸出:e,d,c,b,a10.下列System.out.printf語(yǔ)句輸出的結(jié)果是什么? int a=3,4,1,2,-6;for(int i=0; i<a.lemgth;i+) for(int j=i+1;j<a.length;j+) if(aj<ai)Int

8、 n=aj; aj=ai; ai=n; System.out.printf(“%d,%d,%d,%d,%d”,a0,a1, a2,a3,a4);輸出:-6,1,2,3,411.public class Tick public static void main(String args)int a=3,4,1,2,-6;for(int i=0; i<a.length;i+) for(int j=i+1;j<a.length;j+) if(aj<ai) int n=aj; aj=ai; ai=n; System.out.printf("%d,%d,%d,%d,%d&quo

9、t;,a0,a1, a2,a3,a4);第四章 類與對(duì)象1. 在聲明類時(shí),類名應(yīng)遵循哪些習(xí)慣?答:首字母大寫, 望名知意2. 類體內(nèi)容有哪兩種重要成員?答:成員變量,和成員方法。3。實(shí)例方法可以操作類變量嗎?類方法可以操作實(shí)例變量嗎?答:實(shí)例方法可以操作類變量。而類方法不可以操作實(shí)例變量。4. 當(dāng)類的字節(jié)碼加載到內(nèi)存時(shí),類變量就一定分配了內(nèi)存空間嗎?答:實(shí)例成員變量不分配內(nèi)存,而類變量一定分配內(nèi)存。5. 類的實(shí)例變量在什么時(shí)候分配內(nèi)存?答:聲明之后,在用new關(guān)鍵字創(chuàng)建實(shí)例的時(shí)候才分配內(nèi)存。6. 一個(gè)類的類變量被該類創(chuàng)建的所有對(duì)象共享嗎?答:共享7. 不同對(duì)象的實(shí)例變量分配的內(nèi)存地址一定不同嗎

10、?答:當(dāng)出現(xiàn)引用賦值語(yǔ)句時(shí)兩個(gè)實(shí)例變量的內(nèi)存地址相同。8. 什么叫方法的重載?構(gòu)造方法可以重載嗎?答:方法的重載是指一個(gè)類中可以有多個(gè)方法具有相同的名字,但這些方法的參數(shù)不同,或者參數(shù)的個(gè)數(shù)不同,或者參數(shù)的類型不同。構(gòu)造方法可以重載。9. 請(qǐng)闡述為什么類方法不能調(diào)用實(shí)例方法?答:對(duì)于類方法在該類加到內(nèi)存時(shí)就分配了相應(yīng)的入口地址,所以即使該類未創(chuàng)建對(duì)象,也可以通過類名調(diào)用類方法。而這時(shí)在類對(duì)象創(chuàng)建之前,實(shí)例方法還沒有入口地址。還不知道一個(gè)方法從何處開始執(zhí)行,當(dāng)然不能調(diào)用。10. 請(qǐng)闡述,為什么類方法中不能操作實(shí)例成員變量?答:對(duì)于類方法在該類加到內(nèi)存時(shí)就分配了相應(yīng)的入口地址,所以即使該類未創(chuàng)建對(duì)

11、象,也可以通過類名調(diào)用類方法。而這時(shí)在類創(chuàng)建之前,實(shí)例成員變量還沒有分配內(nèi)存空間。沒內(nèi)存空間當(dāng)然無法操作。11. 實(shí)例方法可以用類名直接調(diào)用嗎?答:不能,因?yàn)閷?shí)例方法,用new創(chuàng)佳對(duì)象后才分配入口地址,而類名,一經(jīng)聲明就分配類名地址。而這時(shí)對(duì)象創(chuàng)建之前實(shí)例方法還沒有入口地址。實(shí)例方法表現(xiàn)實(shí)例的功能,或改變實(shí)例變量。用類調(diào)用改變那個(gè)實(shí)例的實(shí)例變量,表現(xiàn)那個(gè)實(shí)例的功能,不明確。12. 關(guān)鍵字this可以出現(xiàn)在構(gòu)造方法中嗎?可以出現(xiàn)在實(shí)例方法中嗎?可以出現(xiàn)在類方法中嗎?答:可以出現(xiàn)在構(gòu)造方法中,代表該類構(gòu)造方法所創(chuàng)造出的對(duì)象??梢猿霈F(xiàn)在實(shí)例方法中,代表使用該方法的當(dāng)前對(duì)象。This不能出現(xiàn)在類方法中

12、,因?yàn)轭惙椒ㄊ峭ㄟ^類名調(diào)用的。13. 源文件聲明編寫的類一定在同一個(gè)包中嗎?答:不一定,當(dāng)不在同一包中時(shí),可用import語(yǔ)句將其所在的包引入該源文件中。14. “import java.awt.*”與“”有什么不同?答:前者引入了awt包中的所有類,后者只引入了Button一個(gè)類。15. 程序中使用了“import java.util.*;”程序運(yùn)行時(shí),是要加載java.util包中的全部類到內(nèi)存嗎?答:不,只加載本程序用到的類到內(nèi)存中,因?yàn)閖ava程序是動(dòng)態(tài)加載,字節(jié)碼類文件。16. 有哪幾種訪問權(quán)限修飾符?說出一種的作用。答:訪問權(quán)限修飾符有public, private,protect

13、ed.Private作用是只允許本類的對(duì)象訪問。17. 怎樣反編譯一個(gè)類?答:使用SDK提供的反編譯器javap.exe文件可以實(shí)現(xiàn)將字節(jié)碼文件反編譯為源碼文件??刹榭丛创a中public方法和public成員變量的名字。如加入?yún)?shù)-private則可列出其全部的成員方法和成員變量。如:Javap private java.awt.Button則可以列出Button類中全部的方法和成員變量。18. 下面程序中那個(gè)語(yǔ)句是錯(cuò)的?class A private float weight; /weight被修飾為private的float型變量。 public float f(float a,float

14、 b) /方法 f是public方法。 return a; public class B void g() A a=new A(); a.weight=23f; a.f(3,4); 答:a.weight=23f;錯(cuò)1. 編寫一個(gè)類,該類創(chuàng)建的對(duì)象可以計(jì)算等差數(shù)列的和。解:class DengCha int start,d; DengCha() DengCha(int start,int d) this.start=start; this.d=d; void setStart(int s) start=s; void setD(int d) this.d=d; int getSum(int n)

15、 int sum=0,i=1; while(i<=n) sum=sum+start; start=start+d; i+; return sum; public class ZuoYe04_1 public static void main (String args ) DengCha shulie=new DengCha(2,3); System.out.println(shulie.getSum(100); shulie.setStart(10); shulie.setD(5); System.out.println(shulie.getSum(9); DengCha arithme

16、tical=new DengCha(); Scanner Reader=new Scanner(System.in); System.out.println("請(qǐng)輸入等差數(shù)列開始值"); arithmetical.start=Reader.nextInt(); System.out.println("請(qǐng)輸入等差數(shù)列的差值"); arithmetical.d=Reader.nextInt(); System.out.println("請(qǐng)輸入等差數(shù)列求和的個(gè)數(shù)"); int n=Reader.nextInt(); System.out.p

17、rintln(n+"個(gè)數(shù)的和是"+arithmetical.getSum(n); 3.編寫一個(gè)類,該類封裝了一元二次方程的屬性和功能,即該類有刻畫方程系數(shù)的3個(gè)成員變量和求根的方法。要求:該類所有對(duì)象共享常數(shù)項(xiàng)。class SquareEquation double a,b; static double c; double root1,root2; boolean boo; public SquareEquation(double a,double b,double c) this.a=a; this.b=b; SquareEquation.c=c; if(a!=0) bo

18、o=true; else boo=false; public void getRoots() if(boo) System.out.println("是一元2次方程"); double disk=b*b-4*a*c; if(disk>=0) root1=(-b+Math.sqrt(disk)/(2*a); root2=(-b-Math.sqrt(disk)/(2*a); System.out.printf("方程的根:%f,%fn",root1,root2); else System.out.printf("方程沒有實(shí)根n");

19、 else System.out.println("不是一元2次方程"); public void setCoefficient(double a,double b,double c) this.a=a; this.b=b; SquareEquation.c=c; if(a!=0) boo=true; else boo=false; public class ZuoYe4_3 public static void main(String args ) SquareEquation equation1=new SquareEquation(4,5,1); SquareEqua

20、tion equation2=new SquareEquation(3,5,-7); equation1.getRoots(); equation2.getRoots(); 4.程序源文件Example.java如果使用了包語(yǔ)句,例如: package tom.jiafei;并且有c:1000tomjiafei的目錄結(jié)構(gòu), 并且將源文件編譯后得到的全部字節(jié)碼文件拷貝到目錄c:1000tomjiafei中。問在哪個(gè)目錄中運(yùn)行此文件,運(yùn)行命令是什么?答:運(yùn)行程序時(shí)必須到tomjiafei的上一層目錄1000中來運(yùn)行,如: c:1000java tom.jiafei. Example第五章 繼承、接

21、口與泛型1。子類在什么情況下可以繼承父類的友好成員?答:父子類在同一包中時(shí)子類可以繼承父類的友好成員。2。子類通過什么辦法,可以隱藏繼承的成員變量。答:子類成員變量與父類成員變量同名。3。子類重寫繼承方法的規(guī)則是什么?答:重寫隱藏父類的方法需:返回的數(shù)據(jù)類型相同,參數(shù)的個(gè)數(shù)相同,并且類型相同。如果重寫父類的方法后參數(shù)的個(gè)數(shù)或類型不同會(huì)出現(xiàn)子類方法的重載。4. 子類的構(gòu)造方法的第一條語(yǔ)句是什么?答:如果需要調(diào)用父類構(gòu)造方法,則應(yīng)是用super關(guān)鍵詞調(diào)用父類的構(gòu)造方法。5。子類一旦重寫了繼承的方法,就會(huì)隱藏繼承的方法。是這樣嗎?答:不一定。在參數(shù)的個(gè)數(shù)或類型不同時(shí)會(huì)產(chǎn)生重載。如果只有返回值的類型不

22、同,將會(huì)產(chǎn)生編譯錯(cuò)誤。(5) 子類隱藏父類的方法,參數(shù)必須_相同并且_相同.答: 個(gè)數(shù) ,類型6。子類重寫繼承方法時(shí),可以降低方法的權(quán)限嗎?答:重寫繼承方法時(shí)不能降低訪問權(quán)限。7。簡(jiǎn)述關(guān)鍵字super的用法。答:1)子類調(diào)用父類的構(gòu)造方法。2)子類對(duì)象引用被隱藏了的父類方法,或成員變量。8.假設(shè)父類有一個(gè)方法:Public double f(double x, double y) return x+y;是否允許子類再聲明如下的方法:Public float f(double x, double y) return 23;答:不允許。9。父類的final方法可以被子類重寫嗎?答:不可以10。什么

23、類中可以有abstract方法?答:被abstract修飾的類。接口中也可以有abstract方法11。什么叫做對(duì)象的上轉(zhuǎn)型對(duì)象?答:用子類的構(gòu)造方法構(gòu)造出來的對(duì)象,賦值給父類對(duì)象。12。什么叫接口回調(diào)?答:用實(shí)現(xiàn)接口的類創(chuàng)建的對(duì)象,賦值給該接口聲明的接口變量。13。與類有關(guān)的匿名類一定是該類的子類嗎?與接口有關(guān)的匿名類一定是實(shí)現(xiàn)該接口的一個(gè)類嗎?答:一定,因?yàn)轭悇?chuàng)建對(duì)象時(shí),除了構(gòu)造方法還有類體,此類體被認(rèn)為是該類的一個(gè)子類去掉類聲明后的類體。即匿名類,匿名類就是一個(gè)子類。與接口的匿名類相同。一定是子類。14。怎樣聲明一個(gè)泛型類?答:我們可以這樣聲明一個(gè)泛型類: class A<E>

24、; 其中A時(shí)泛型的名稱,E是其中的泛型,即我們沒有指定E是何種類型的數(shù)據(jù),它可以是任何對(duì)象或接口,但不能是基本數(shù)據(jù)類型。15閱讀下列程序,并說明輸出結(jié)果。class NegativeIntegerException extends Exception String message; public NegativeIntegerException() message="方法的參數(shù)值不是正整數(shù)" public String toString() return message; class MaxCommonDivisor public int getMaxCommonDivis

25、or(int a, int b)throws NegativeIntegerException if(a<0|b<0) throw new NegativeIntegerException(); int r=0; if(a>b) int t=a; a=b; b=t; r=a%b; while(r!=0) a=b; b=r; r=a%b; return b; class MinCommonMultiple extends MaxCommonDivisorpublic int getMinCommonMultiple(int a, int b)throws NegativeInt

26、egerException if(a<0|b<0) throw new NegativeIntegerException(); int y=0; int x=getMaxCommonDivisor(a,b); y=(a*b)/x; return y; public class Example public static void main (String arg) int maxCommonDivisor, minCommonMultiple; MaxCommonDivisor max=new MaxCommonDivisor(); MinCommonMultiple min =

27、new MinCommonMultiple(); try maxCommonDivisor=max.getMaxCommonDivisor(18,12); System.out.println("最大公約數(shù):"+ maxCommonDivisor); minCommonMultiple=min.getMinCommonMultiple(18,12); System.out.println("最小公倍數(shù):"+minCommonMultiple); maxCommonDivisor=max.getMaxCommonDivisor(-64,48); Syste

28、m.out.println("最大公約數(shù):"+maxCommonDivisor); catch(NegativeIntegerException e) System.out.println(e.toString(); 3。編寫一個(gè)類要求實(shí)現(xiàn)一個(gè)接口,該接口有3個(gè)abstract方法:Public abstract void f( int x);Public abstract void g(int x, int y);Public abstract double h(double x);要求在應(yīng)用程序主類中使用該類創(chuàng)建對(duì)象,并使用接口回調(diào)調(diào)用方法f(), g() 和h().解

29、:interface A public abstract void f(int x); public abstract void g(int x,int y); public abstract double h(double x);class A1 implements A public void f(int x) System.out.println(x); public void g(int x,int y) int z=x+y; System.out.println(z); public double h(double x) return x*x; class A2 implements

30、 A public void f(int x) System.out.println("Hello:"+x); public void g(int x,int y) int z=x-y; System.out.println(z); public double h(double x) return Math.sqrt(x); class A3 implements A public void f(int x) System.out.println("你好:"+x); public void g(int x,int y) double z=(double)

31、x/y; System.out.println(z); public double h(double x) return 1/x; public class ZuoYe5_3 public static void main(String args ) A a=new A1(); a.f(10); a.g(12,20); System.out.println(a.h(100); a=new A2(); a.f(10); a.g(12,20); System.out.println(a.h(100); a=new A3(); a.f(10); a.g(12,20); System.out.prin

32、tln(a.h(100); 利用面向接口編程的方法,編寫計(jì)算錐形體積的完整程序,注意錐形的底可以為圓形,矩形,或梯形等。(對(duì)細(xì)節(jié)滿足開閉原則。)4求下列程序運(yùn)行結(jié)果:class A public double y=11.456789; public void f() y=y+1; System.out.printf("y是double型的變量,y=%fn",y); class B extends A int y=0; public void g() y=y+100; System.out.printf("y是int型的變量,y=%dn",y); clas

33、s Example5_3 public static void main(String args ) B b=new B(); b.y=200; b.g(); /調(diào)用子類新增的方法 b.f(); /調(diào)用子類繼承的方法 class A int m=0,n=0; long f() return m+n; class B extends A int m=1,n=1; long f() long result=0; super.m=10; super.n=20; result=super.f()+(m+n); return result; long g() long result=0; result=

34、super.f(); return result/2; public class Example5_7 public static void main(String args ) B b=new B(); b.m=3; b.n=7; long resultOne=b.g(); long resultTwo=b.f(); long resultThree=b.g(); System.out.println("resultOne="+resultOne); System.out.println("resultTwo="+resultTwo); System.

35、out.println("resultThree="+resultThree); (6) 即所謂的開閉原則,對(duì)_關(guān)閉,對(duì)_開放。答: 修改,擴(kuò)展(7) 編寫一個(gè)面向抽象的完整程序,求柱形體積,計(jì)算方法底*高,但底面積的算法經(jīng)常要變化。于是對(duì)于求底面積可以設(shè)一個(gè)抽象類Geometry 。柱形面對(duì)具有抽象類的Geometry設(shè)計(jì)。最后完成對(duì)圓形底面積的柱形,和梯形底面積的柱形計(jì)算體積。(8)求下列程序的運(yùn)行結(jié)果。interface Show void show();class A implements Show public void show() System.out.pri

36、ntln("I love This Game"); class B implements Showpublic void show() System.out.println("我喜歡看NBA"); class C public void f(Show s) /接口作為參數(shù) s.show(); public class Example5_13 public static void main(String args) C c=new C(); c.f(new A(); c.f(new B(); 答: I love This Game我喜歡看NBA(9)寫出下

37、面程序的運(yùn)行結(jié)果:public class Example5_18 public static void main(String args ) int n=0,m=0,t=0; try t=9999; m=Integer.parseInt("8888"); n=Integer.parseInt("12s3a"); /發(fā)生異常,轉(zhuǎn)向catch System.out.println("我沒有機(jī)會(huì)輸出"); catch(Exception e) System.out.println("發(fā)生異常"); n=123; Sys

38、tem.out.println("n="+n+",m="+m+",t="+t); 答:發(fā)生異常 n=123, m=8888, t=9999第六章 字符串和正則表達(dá)式 1。對(duì)于字符串String S1=new String(“OK”);String S2=new String(“OK”);說出下列表達(dá)式的值:S1=S2S1.equals(S2)答:(1) false (2) trueString s1=new String(“I love you zhht”);String s2=s1.replaceAll(“l(fā)ove”,”hate”)

39、;說出System.out.printf(“%s, %s”, s1,s2)的結(jié)果。結(jié)果:I love you zhht , I hate you zhht3. String 類和StringBuffer類有何不同?答:String 類創(chuàng)建的字符串對(duì)象存儲(chǔ)空間是不能修改的。而使用StringBuffer類創(chuàng)建的對(duì)象是可以修改其字符串序列,即該類的對(duì)象的實(shí)體內(nèi)存空間是可以改變的,便于存放可變字符串。4。對(duì)于StringBuffer串StringBuffer str=new StringBuffer(“abcdefg”); str=str.delete(2,4);說出System.out.print

40、ln(str)的結(jié)果。答:abefg (4為需要?jiǎng)h除的下一個(gè)字符的下標(biāo))5.StringTokenizer類的主要用途是什么?該類有哪幾個(gè)重要的方法?答:當(dāng)我們分析一個(gè)字符串并將字符串分解成可被獨(dú)立使用的單詞時(shí),可以使用java.util包中的StringTokenizer類.可以使用nextToken()方法逐個(gè)獲取字符串分析器中的語(yǔ)言符號(hào)(單詞),每當(dāng)獲取到一個(gè)語(yǔ)言符號(hào),字符串分析器中的負(fù)責(zé)計(jì)數(shù)的變量的值就自動(dòng)減一,該計(jì)數(shù)變量的初始值等于字符串中的單詞數(shù)目.字符串分析器調(diào)用countTokens()方法可以得到計(jì)數(shù)變量的值。字符串分析器通常用while循環(huán)來逐個(gè)獲取語(yǔ)言符號(hào),為了控制循環(huán),

41、我們可以使用StringTokenizer類中的hasMoreTokens()方法,只要計(jì)數(shù)的變量的值大于0,該方法就返回true,否則返回false。6。下列System.out.printf語(yǔ)句的輸出結(jié)果是什么?String s=new String(“we, go, to, school”);StringTokenizer token=new StringTokenizer(S,”,”);String word=token.nextToken();Int n=token.countTokens();System.out.printf(“%s,%d”,word,n); 答:We ,37。請(qǐng)

42、說出Matcher對(duì)象的find()方法和lookingAt()方法有什么不同?答:public boolean find() :尋找input和pattern匹配的下一子序列public boolean lookingAt():判斷從input的開始位置是否有和pattern匹配的子序列。8。正則表達(dá)式中的元字符123代表什么意思?答:代表1,2,3中的任何一個(gè)9。說出與模式“A1252”匹配的4個(gè)字符串。答:A12,A25,A15,A5210。下列哪些字符串匹配模式“boyw3”boy111 B. boy!#C. Boyweo D. Boyboybpy11.有模式pattern=“A135

43、9?”求和模式pattern相匹配的全部字符串?答: “A” , “A1”, “A3”, “A5”, “A9”12. 一個(gè)正則表達(dá)式是含有一些具有_的字符串,這些特殊字符稱作正則表達(dá)式中的_答:特殊意義字符, 元字符第七章 常用實(shí)用類1.怎樣實(shí)例化一個(gè)Calendar對(duì)象?答:Calendar類在java.util包中。使用Calendar類的static方法getInstance()可以初始化一個(gè)日歷對(duì)象,如:Calendar calendar= Calendar.getInstance();2. Calendar對(duì)象調(diào)用set(1949, 9,1)設(shè)置的年月日分別是多少?答:1949年10

44、月1日3. 怎樣得到一個(gè)1-100之間的隨機(jī)數(shù)?答:int randomNumber=(int)(Math.random()*100)+14. BigInteger類的常用構(gòu)造方法是什么?答:可以使用構(gòu)造方法: public BigInteger(String val)5. 兩個(gè)BigInteger類對(duì)象怎樣進(jìn)行加法運(yùn)算?答:BigInteger n1=new BigInteger ("大整數(shù)字符串"), n2=new BigInteger("大整數(shù)字符串"), result=null; result=n1.add(n2);6. LinkedList&l

45、t;E>泛型類是一種什么數(shù)據(jù)結(jié)構(gòu)?答:是一種鏈表類數(shù)據(jù)結(jié)構(gòu)。7. 對(duì)于需要經(jīng)常查找的數(shù)據(jù),應(yīng)選用LinkedList<E>還是選用HashMap<K,V>?答:選用HashMap<K,V>第八章 線程1. 線程和進(jìn)程是什么關(guān)系?答:線程是比進(jìn)程更小的執(zhí)行單位。一個(gè)進(jìn)程在其執(zhí)行過程中,可以產(chǎn)生多個(gè)線程,形成多條執(zhí)行線索,每條線索,即每個(gè)線程也有它自身的產(chǎn)生、存在和消亡的過程,也是一個(gè)動(dòng)態(tài)的概念。2. 線程有幾種狀態(tài)?答:新建狀態(tài), 運(yùn)行狀態(tài),中斷狀態(tài),死亡狀態(tài)3. 引起線程中斷的常見原因是什么?答:有4種:有4種原因的中斷:(a) JVM將CPU資源從當(dāng)

46、前線程切換給其他線程,使本線程讓出CPU的使用權(quán)處于中斷狀態(tài)。(b)線程使用CPU資源期間,執(zhí)行了sleep(int millsecond)方法。(c)線程使用CPU資源期間,執(zhí)行了wait()方法。 (d) 線程使用CPU資源期間,執(zhí)行某個(gè)操作進(jìn)入阻塞狀態(tài),比如執(zhí)行讀/寫操作引起阻塞。4. 一個(gè)線程執(zhí)行完run()方法后,進(jìn)入什么狀態(tài)?該線程還能再調(diào)用start()方法嗎?答:一個(gè)線程執(zhí)行完run()方法進(jìn)入死亡狀態(tài),之后還能再調(diào)用start()方法運(yùn)行5. 線程在什么狀態(tài)時(shí),調(diào)用isAlive()方法后返回值是false?答:當(dāng)線程進(jìn)入死亡狀態(tài)后(實(shí)體內(nèi)存被釋放),線程仍可以調(diào)用方法isA

47、live(),這時(shí)返回的值是false。(線程未調(diào)用start方法之前,調(diào)用isAlive()方法返回false).6. 線程調(diào)用interrupt()的作用是什么?答: intertupt方法經(jīng)常用來“吵醒”休眠的線程。當(dāng)一些線程調(diào)用sleep方法處于休眠狀態(tài)時(shí),一個(gè)使用 CPU資源的其它線程在執(zhí)行過程中,可以讓休眠的線程調(diào)用interrupt 方法“吵醒”自己,即導(dǎo)致休眠的線程發(fā)生InterruptedException異常,從而結(jié)束休眠,重新排隊(duì)等待CPU資源。8. wait(), notify(), notifyAll()的作用分別是什么?答:wait()、notify()和notif

48、yAll()都是Object類中的final方法,被所有的類繼承,且不允許重寫的方法。 當(dāng)一個(gè)線程使用的同步方法中用到某個(gè)變量,而此變量又需要其它線程修改后才能符合本線程的需要,那么可以在同步方法中使用wait()方法。使用wait()方法可以中斷方法的執(zhí)行,使本線程等待,暫時(shí)讓出CPU的使用權(quán),并允許其它線程使用這個(gè)同步方法。其它線程如果在使用這個(gè)同步方法時(shí)不需要等待,那么它使用完這個(gè)同步方法的同時(shí),應(yīng)當(dāng)用notifyAll()方法通知所有的由于使用這個(gè)同步方法而處于等待的線程結(jié)束等待。(如果使用notify()方法則只通知處于等待中的某一個(gè)線程結(jié)束等待) 9.將例子10中的TicketSe

49、ller類中的循環(huán)條件:While(fiveNumber<1)改寫成:If(fiveNumber<1)是否合理,理由是什么?答:是合理的,因?yàn)榇搜h(huán)只有一種可能作循環(huán)體內(nèi)的語(yǔ)句。10.將例子10中的TicketSeller類中出現(xiàn)的:Wait( )改寫成:Thread.sleep(2000)從新編譯,運(yùn)行,觀察結(jié)果。答:sleep(2000)線程到時(shí)醒來排隊(duì),這期間中斷的原因不一定解決,wait()則直到中斷原因消失才結(jié)束等待。11. 什么叫守護(hù)線程?答:一個(gè)線程調(diào)用 void setDaemon(boolean on) 方法可以將自己設(shè)置成一個(gè)守護(hù)(Daemon)線程,例如: thread.setDaemon(true); 線程默認(rèn)是非守護(hù)線程,非守護(hù)線程也稱作用戶(user)線程。 當(dāng)程序中的所有用戶線程都已結(jié)束運(yùn)行時(shí),即使守護(hù)線程的run方法中還有需要執(zhí)行的語(yǔ)句,守護(hù)線程也立刻結(jié)束運(yùn)行。一般地,用守護(hù)線程做一些不是很嚴(yán)格的工作,線程的隨

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(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)論