java《面向?qū)ο蟪绦蛟O(shè)計》作業(yè)_第1頁
java《面向?qū)ο蟪绦蛟O(shè)計》作業(yè)_第2頁
java《面向?qū)ο蟪绦蛟O(shè)計》作業(yè)_第3頁
java《面向?qū)ο蟪绦蛟O(shè)計》作業(yè)_第4頁
java《面向?qū)ο蟪绦蛟O(shè)計》作業(yè)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

課后作業(yè)

第一章Java語言基礎(chǔ)知識

i.程序設(shè)計語言發(fā)展的歷程

答案:機器語言、匯編語言、高級語言、面向?qū)ο蟮恼Z言

2.面向?qū)ο笳Z言的基本特征

答案:抽象和封裝、繼承性、多態(tài)性

3.Java語言的特點

答案:java語言是一種卓越的程序設(shè)計語言,它具有以下特點。

1.面向?qū)ο?.簡單性3.可移植性4.穩(wěn)定性和安全性5.高性能6?分布

4.為什么Java語言是跨平臺的?

答案:因為Java程序的最終實現(xiàn)需要經(jīng)過編譯和解釋兩個步驟,Java語言的

編譯器生成可執(zhí)行的字節(jié)碼,這種代碼是由Java虛擬機生成的,它與任何硬件

平臺無關(guān)。當(dāng)生成字節(jié)碼后,再使用Java解釋器來執(zhí)行字節(jié)碼,這也就意味著

只要有安裝Java解釋器的機器Java程序都可以運行,所以它是跨平臺的面向

對象的程序設(shè)計語言。

5.Java2的SDK是什么?

答:Java2的SDK指SoftwareDevelopmentKit軟件開發(fā)工具集

6.Java開發(fā)工具中的javac.exe和java.exe的功能是什么?

答案:Javac.exe是Java編譯器,用來將java程序編譯成字節(jié)碼。

Java,exe是Java解釋器,執(zhí)行已經(jīng)轉(zhuǎn)換成Bytecode的java應(yīng)用程序。

7.Java集成開發(fā)環(huán)境有哪些?

答案:Java集成開發(fā)環(huán)境主要有:Eclipse^netBeans、JcreatorLE>Borland

Jbuilder^MicrosoftVisualJ++、IBM:VisualAgeforJava^SunONEStudio

8.Java程序編譯執(zhí)行的過程

答案:Java語言源程序的變異過程主要進行兩件工作:

1.通過編譯程序檢查Java源程序中是否有語法錯誤,如果發(fā)現(xiàn)錯誤,便

報告已發(fā)現(xiàn)的錯誤,修改后再編譯,直到未發(fā)現(xiàn)錯誤時才生成字節(jié)碼文

件。

2.通過編譯來引入Java類庫中已編好的模塊,為了方便編程,Java類庫

中有若干個包,每個包中有若干個模塊,每個模塊是一個具有某種功能的

類,它們都是字節(jié)碼形式的程序。

9.Application有哪些特點?如何運行Application程序?

答案:1.JavaApplication程序結(jié)構(gòu)上的特點

a.程序名必須與主類名相同。

b.Java程序師區(qū)分大小寫字母的。

c.Java程序中的所有方法都是屬于某個類的,沒有不屬于某個類的方

法。

2.Java程序在書寫上的特點

a.使用的變量名、對象名、方法名等標(biāo)示符要有意義,盡量做到“見名

知義”。

b.使用空行來分隔不相關(guān)的語句。

c.合理進行縮進和對齊,使得程序顯得層次分明。

d.一條語句寫一行,長語句可以續(xù)行。

e.適當(dāng)在程序中寫一些注釋信息,有利于程序的可讀性。

JavaApplication程序與其他高級語言編寫的程序一樣,都需要經(jīng)過編輯、

編譯、運行等幾個步驟。

a.編輯Java源程序

b.編譯Java源程序

c.運行Java的字節(jié)碼文件

10.編寫Application程序,計算并輸出sinlOx+ctgx在x=3.5的值。

答案:publicclasslianxi

publicstaticvoidmain(String[]args){

inty;

floatx=(float)3.5;

y=(int)(Math.pohz(Math.sin(x)z10)+1/Math.tan(x));

/**注意數(shù)據(jù)類型,用int強制轉(zhuǎn)換*/

System.out.printin(ny=H+y);

}

)

11.編寫Application程序,將數(shù)組a[]={20,10,50,40,30,70,60,80,90,100}

按逆序輸出。

答案:publicclasslianxi

publicstaticvoidmain(String[]args)

(

intIntArray[]={20,10,50,40,30,70,60,80z90z100);

inti;

for(i=9;i>=0;i--)

System.out.printIn("IntArray[n+i+**]=n+IntArray[i]);

)

}

第二章類與對象的基本概念

1.結(jié)構(gòu)化程序設(shè)計的特征

答案:結(jié)構(gòu)化語言的顯著特征是代碼和數(shù)據(jù)的分離,通常由若干個程序模

塊組成,每個程序模塊都可以是子程序或函數(shù),數(shù)據(jù)和功能分離,代碼難

于維護和復(fù)用

2.面向?qū)ο蟪绦蛟O(shè)計的特征

答案:面向?qū)ο蟮某绦蛟O(shè)計方法更符合人們認(rèn)識客觀世界的思維習(xí)慣,降低了

問題難度和分解問題大的復(fù)雜性;提高了程序代碼的重用性,簡化了編程的過

程;可以以較小的代價和較高的效率獲得滿意的效果。

3.抽象、封裝、繼承、多態(tài)的概念

答案:抽象是從眾多的事物中抽取出共同的、本質(zhì)性的特征,而舍棄其非

本質(zhì)的特征。

封裝是指將描述某種實體的數(shù)據(jù)和基于這些數(shù)據(jù)的操作集合到一起,形

成一個封裝體。

繼承是面向?qū)ο蠓椒ㄖ械闹匾匦?,繼承反映了兩個類之間的一種關(guān)系。

多態(tài)是指在程序中出現(xiàn)的“重名”現(xiàn)象,在面向?qū)ο蟮某绦蛟O(shè)計中,為

提高程序的抽象程度和簡潔程度,而出現(xiàn)“重名”現(xiàn)象。

4.類和對象的概念

答案:類是一種自定義的數(shù)據(jù)類型,通常又稱為類類型。是同種對象的集合,

對現(xiàn)實世界種的實體的高度抽象。

對象就是對客觀世界中的實體的映射。

5.如何定義類

答案:定義類的格式

[〈修飾符>]class<類名>[extends〈父類名>][impleinents<接口名>]

6.數(shù)據(jù)成員的可選修飾符有哪些?實例變量和類變量有何區(qū)別?

答案:public、protected、private>static、final、transient

volatile

7.方法成員的可選修飾符有哪些?實例方法和類方法有何區(qū)別?

答案:public、protected、private、static、final、abstract、native>

synchronized

8.構(gòu)造方法的作用和特點、this關(guān)鍵字的作用。

答案:構(gòu)造方法是一種特殊的方法,其功能是對創(chuàng)建的對象初始化。

特點:方法名同類名、無返回類型、構(gòu)造方法是在創(chuàng)建對象時,系統(tǒng)自

動調(diào)用為所創(chuàng)建的對象進行初始化的方法。

9.如何創(chuàng)建對象和調(diào)用成員

答案:首先,說明對象。

其次,使用運算符new給說明的對象分配內(nèi)存單元。

最后,為對象初始化。

10.如何創(chuàng)建軟件包

答案:創(chuàng)建包使用package語句,該語句應(yīng)該是Java程序文件的首條語句。

使用該語句指明該文件中定義的類所在的包。

11.Java如何實現(xiàn)內(nèi)存回收

答案:當(dāng)一個對象在程序中不再被使用時,就成為一個無用對象,Java運行時

系統(tǒng)通過垃圾收集器周期性地釋放無用對象所使用的內(nèi)存,Java運行時系統(tǒng)會

在對對象進行自動垃圾回收前,自動調(diào)用對象的finalize。方法

12、定義Student類

①屬性

id:long類型,表示學(xué)號

name:String對象,表示一個人的姓名

sex:char類型,表示性別

②方法

publicvoidsetld(longid):設(shè)置學(xué)號

publiclonggetld():返回學(xué)號

publicStringgetName():返回姓名

publicvoidsetName(Stringname):設(shè)置姓名

publicchargetSex():返回性別

publicvoidsetSex(charsex):設(shè)置性別

答案:

packageexample;

publicclassStudent{

privatelong工d;//學(xué)號

privateStringName;//姓名

privatecharSex;//性別

publiclonggetId(){

returnId;

)

publicvoidsetId(longid){

Id=id;

}

publicStringgetName(){

returnName;

)

publicvoidsetName(Stringname){

Name=name;

}

publicchargetSex(){

returnSex;

)

publicvoidsetSex(charsex){

Sex=sex;

13、創(chuàng)建Application程序類TestStudent完成如下測試功能:

(1)用以下信息生成一個Student對象aGirl

學(xué)號:2503123

姓名:李麗

性別:女

(2)調(diào)用aGirl的get方法輸出aGirl的信息,格式如下:

學(xué)號:2503123姓名:李麗性別:女

答案:

packageexample;

importexample.student;

publicclassTestStudent{

publicstaticvoidmain(String[]args){

studentaGirl=newstudent();

aGirl.setId(2503123);

aGirl.setName("李麗”);

aGirl.setSex「女,);

System.out.print("學(xué)號:"+aGirl.getId()+”n);

System.out.print("姓名:n+aGirl.getName()+”H);

System.out.printIn("性別:M+aGirl.getSex());

)

)

第三章類的方法

1、Java中選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的實現(xiàn)

2、Java的異常的處理機制

答案:

1.拋出(throw)異常

在方法的運行過程中,如果發(fā)生了異常,則該方法生成一個代表該異常的對象

并把它交給運行時系統(tǒng),運行時系統(tǒng)便尋找相應(yīng)的代碼來處理這一異常。

2.捕獲(catch)異常

運行時系統(tǒng)在方法的調(diào)用棧中查找,從生成異常的方法開始進行回溯,直到找

到包含相應(yīng)異常處理的方法為止。

3、方法的重載

答案:方法重載是指功能相同的多個方法使用同一個方法名。

4、編寫Application程序類ArrayApp,實現(xiàn)如下輸出:

Xsin(x)cos(x)

00.01.0

100.170.98

200.340.94

300.50.87

400.640.77

500.770.64

600.870.5

700.940.34

800.980.17

901.00.0

答案:

packageexample;

importjava.text.DecimalFormat;

importjava.text.NumberFormat;

publicclassArrayApp{

/**

*@param<DecDecimalFormat>

*@paramargs

publicstatic<DecDecimalFormat>voidmain(String[]args){

finalintArrayX[]={0,10,20,30,40,50,60,70,80,90};

inti;

doublerad=0;//弧度變量

finalDecimalFormatnf=newDecimalFormat('*0.00n);

System.out.printIn(nXM+MH+Msin(x)H+nH+Mcos(x)n);

for(i=0;i<=9;i++)

{rad=ArrayX[i]*Math.PT/180;

System.out.printin(ArrayX[i]+""+((NumberFormat)

nf).format(Math.sin(rad))+””+((NumberFormat)

nf),format(Math.cos(rad)));}

)

5、在項目中添加一個shape包的Rectangle類,其中包括:

①兩個私有屬性即寬:width和高:height(double型)。一個靜態(tài)最終公有屬性:

name,String類型,取值為“矩形類”.

②在Rectangle類中添加一個無參構(gòu)造函數(shù)和一個帶兩個參數(shù)的構(gòu)造函數(shù)(給兩

個屬性賦初值)。

publicRectangle(){}

publicRectangle(doublewidth,doubleheight){}

③在Rectangle類中添加所有屬性的get和set方法

④在Rectangle類中添加兩個方法計算矩形的周長和面積。

publicdoubleperimeter。{}〃計算周長

publicdoublearea(){}〃計算面積

6、在項目中添加Application程序類RectangleTester類,在程序中實現(xiàn)如下功能:

⑴利用無參構(gòu)造函數(shù)創(chuàng)建對象rl,用set方法設(shè)置rl的寬和高分別為10.2,2.3,然

后調(diào)用rl的perimeter。輸出該矩形的周長。格式如下:第個矩形周長:25.0

(2)利用有參構(gòu)造函數(shù)創(chuàng)建寬為12.3,高為32.1的矩形對象r2,然后調(diào)用r2的area。

{}輸出該矩形的周長。格式如下:第:個矩形面積:394.83000000000004

答案:

packageshape;

publicclassRectangle{

privatestaticdoublewidth;

privatestaticdoubleheight;

privatestaticStringname;

publicRectangle(){)

publicRectangle(doublewidth,doubleheight){

Rectangle.width=width;

Rectangle.heigrht=height;

Rectangl一.n1ame="矩形類”;

)

publicdoubleperimeter()

(

return(width+height)*2;

}

publicstaticdoublearea()

(

returnwidth*height;

}

publicdoublegetWidth(){

returnwidth;

}

publicvoidsetwidth(doublewidth){

Rectangle.width=width;

}

publicdoublegetHeight(){

returnheight;

}

publicvoidsetHeight(doubleheight){

Rectangle.height=height;

}_______

publicstaticStringgetName(){

returnname;

}

publicstaticvoidsetName(Stringname){

Rectangle.name=name;

}

}

packageshape;

publicclassRectangleTester{

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

Rectanglerl=newRectangle();

r1.setwidth(10.2);

rl,setHeight(2.3);

System,out:?printIn("第一個矩;/診周長:n+rl.perimeter());

System.out.printlnO;

newRectangle(12.3,32.1);

System.out.printIn(Rectangle.area());

}

第四章類的重用

1、類的繼承、基類和派生類、子類和父類概念

答案:類的繼承:一種由已有的類創(chuàng)建新類的機制。

基類:也稱超類(superclass)是被直接或間接繼承的類。

派生類:也稱子類(subclass)繼承其他類而得到的類

父類:是所有子類的公共屬性及方法的集合。

子類:則是父類的特殊化。

2、屬性的隱藏、方法覆蓋

答案:子類中聲明了與父類中相同的成員變量名,則從父類繼承的變量將被隱

藏。

如果子類不需使用從父類繼承來的方法的功能,則可以聲明自己的同名

方法,稱為方法覆蓋。

3、繼承時的構(gòu)造方法

答案:

a)子類不能從父類繼承構(gòu)造方法

b)好的程序設(shè)計方法是在子類的構(gòu)造方法中調(diào)用某一個父類構(gòu)造方法,調(diào)

用語句必須出現(xiàn)在子類構(gòu)造方法的第一行,可使用super關(guān)鍵字

C)如子類構(gòu)造方法的聲明中沒有明確調(diào)用父類構(gòu)造方法,則系統(tǒng)在執(zhí)行子

類的構(gòu)造方法時會自動調(diào)用父類的默認(rèn)構(gòu)造方法(即無參的構(gòu)造方法)

4、Object類和常用方法

答案:Java程序中所有類的直接或間接父類,類庫中所有類的父類,處在類層

次最高點。

5、終結(jié)類、終結(jié)屬性與終結(jié)方法的概念和特點

6、抽象類、抽象方法的概念和特點

7、類的組合、組合與繼承的比較

8、語言包(java.lang)的應(yīng)用:數(shù)據(jù)包裹類(Integer類)、字符串類、StringBuffer

9、實用包(java.util)的應(yīng)用:Date類和Calendar類

10>文*包(java.text)的應(yīng)用:SimpleDateFormat類

11、創(chuàng)建Student類,屬性包括學(xué)號,姓名,英語成績,數(shù)學(xué)成績,方法testScore方法(計

算測評成績,測評成績=二門課平均分)

答案:

publicclassstudent{

privateintNo;

privateStringName;

privatelloatEnglishScore;

privatefloatMathsScore;

privatefloatCPScore;

student(intn,Stringna,floate,floatm){

No=n;

Name=na;

EnglishScore=e;

MathsScore=m;

)

publicfloattestScore(){

CPScore=(EnglishScore*MathsScore)/2;

returnCPScore;

)

publicstaticvoidmain(String[]args){

studentsi=newstudent(01,"zhangsanM,80,90);

sl.testScore();

12>創(chuàng)建StudentXW(學(xué)習(xí)委員)類為Student類的子類,在StudentXW類中重寫testScore方

法(計算測評成績,測評成績=二門課平均分+3)

答案:

packageshape;

publicclassStudentXWextendsStudent{

publicfloattestScore(){

Score=(EnScore+MaScore)/2+3;

returnScore;

}

}

13、創(chuàng)建測試類Ex4_l,生成一個Student對象(學(xué)生信息:050101001,張三,76,84),一

個StudentXW對象(學(xué)生信息:050101002,李四,86,84)、分別計算并輸出他們的評

測評成績。

|姓名:張三測評成績:80.0

I姓名:李四測評成績:88.0

答案:

packageshape;

publicclassTeststudent{

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

Studentaboy=newStudent();

aboy.Id=050101001;

aboy.Name="張三'*;

aboy,EnScore=76;

aboy.MaScore=84;

System.out.printin("姓名:"+aboy.Name+“"+”測評成績:

n+aboy.testScore());

StudentXWaboy2=newStudentXW();

aboy2.Id=050101002;

aboy2,Name="李四,

aboy2.EnScore=86;

aboy2.MaScore=84;

System.out.printin("姓名:n+aboy2.Name+n”+”測評成績:

n+aboy2.testScore());

}

14、創(chuàng)建Application程序類ArrayApp,實現(xiàn)如下輸出:

Xsin(x)cos(x)

00.01.0

100.170.98

200.340.94

300.50.87

400.640.77

500.770.64

600.870.5

700.940.34

800.980.17

901.00.0

15、修改上述程序,改用DecimalFormat類控制輸出格式(參看第2章課件第120張幻燈片),

使輸出如下:

X

Osin(x)L000

1O0.000985

2O0.174O.940

3O0.342O.866

4O0.500O.766

5O0.643O.643

6O0.766O.500

7O0.866O.342

8O0.940O.174

9O0.985O.000

1.000O.

packageexample;

importjava.text.DecimalFormat;

importjava.text.NumberFormat;

publicclassArrayApp{

/**

*@param<DecDecimalFormat>

*@paramargs

*/

publicstatic<DecDecimalFormat>voidmain(String[]args){

finalintArrayX[]={0,10,20,30,40,50,60,70,80,90};

inti;

doublerad=0;//弧度變量

finalDecimalFormatnf=newDecimalFormat(n0.000n);

System.out.printin(nXn+n”+”sin(x)n+Hcos(x)");

for(i=0;i<=9;i++)

{rad=ArrayX[i]*Math.PI/180;

System.out.printIn(ArrayX[i]+""+((NumberFormat)

nf).format(Math.sin(rad))+””+((NumberFormat)

nf),format(Math.cos(rad)));}

)

}

第五章接口與多態(tài)

1、接口的作用

答案:是面向?qū)ο蟮囊粋€重要機制,實現(xiàn)多繼承,同時免除C++中的多繼承那

樣的復(fù)雜性,建立類和類之間的“協(xié)議”。

2、接口的定義

答案:與抽象類一樣都是定義多個類的共同屬性,使抽象的概念更深入了一層,

是一個“純”抽象類,它只提供一種形式,并不提供實現(xiàn)。

3、如何使用接口

答案:接口不能用new運算符直接產(chǎn)生對象,必須利用其特性設(shè)計新的類,再

用新類來創(chuàng)建對象,利用接口設(shè)計類的過程,稱為接口的實現(xiàn),使用

implements關(guān)鍵字

4、塑型的概念

答案:又稱為類型轉(zhuǎn)換,如果是基本數(shù)據(jù)類型就是將值從一種形式轉(zhuǎn)換成另一

種形式;如果是引用變量將對象暫時當(dāng)成更一般的對象來對待,并不改

變其類型。

5、多態(tài)概念和作用

答案:多態(tài)是指不同類型的對象可以響應(yīng)相同的消息,從相同的基類派生出來

的多個類型可被當(dāng)作同一種類型對待,可對這些不同的類型進行同樣的

處理,由于多態(tài)性,這些不同派生類對象響應(yīng)同一方法時的行為是有所

差別的。

作用:所有的對象都可被塑型為相同的類型,響應(yīng)相同的消息;使代碼變得簡

單且容易理解,使程序具有很好的“擴展性”。

6、構(gòu)造函數(shù)的調(diào)用順序

答案:調(diào)用基類的構(gòu)造方法。這個步驟會不斷重復(fù)下去,首先得到構(gòu)建的是分

級結(jié)構(gòu)的根部,然后是下一個派生類,等等。直到抵達最深一層的派生

類。按聲明順序調(diào)用成員初始化模塊,調(diào)用派生構(gòu)造方法。

7、創(chuàng)建Shape2D接口。

interfaceShape2D{//聲明Shape2D接口

doublepi-3.14;//數(shù)據(jù)成員--定要初始化

doubleareaO;//抽象方法,不需要定義處理方式

)

思考:

?為何接口是一個“純”抽象類?

?接口如何隱藏實現(xiàn)細節(jié)?

?為何上述接口中的pi值不能改變?

8.創(chuàng)建Circle類,實現(xiàn)Shape2D接口

classCircleimplementsShape2D

(

doubleradius;

publicCircle(doubler)

(

radius=r;

)

publicdoublearea()

return(pi*radius*radius);

)

思考:

?Circle類實現(xiàn)了Shape2D接口是如何體現(xiàn)的?

9.創(chuàng)建Rectangle類,實現(xiàn)Shape2D接口

classRectangleimplementsShape2D

(

intwidth,height;

publicRectangle(intw,inth)

(

width=w;

height=h;

)

publicdoublearea()

(

return(width*height);

)

)

思考:

?去除卜列代碼后,結(jié)果會怎樣?為什么?

publicdoublearea()

(

return(width*height);

)

10.創(chuàng)建InterfaceTester測試類。

publicclassInterfaceTester{

publicstaticvoidmain(Stringargs[]){

Rectanglerect=newRectangle(5,6);

System.out.println("Areaofrect="+rect.area());

Circlecir=newCircle(2.0);

System.out.println("Areaofcir="+cir.area());

)

)

思考:

?如何理解接口能使在看起來不相干的對象之間定義共同行為?

第六章輸入/輸出流和文件

1、I/O流的概念以及分類

答案:在Java中將信息的輸入與輸出過程抽象為I/O流

輸入是指數(shù)據(jù)流入程序;輸出是指數(shù)據(jù)從程序流出

輸入/輸出流可以從以下幾個方面進行分類

從流的方向劃分:輸入流和輸出流

從流的分工劃分:節(jié)點流和處理流

從流的內(nèi)容劃分:面向字符的流和面向字節(jié)的流

2、讀寫文本文件、二進制文件的方法

3、處理流的概念及用法

4、File類及用法

答案:表示磁盤文件信息

定義了一些與平臺無關(guān)的方法來操縱文件:創(chuàng)建、刪除文件、重命名文

件,判斷文件的讀寫權(quán)限及是否存在,設(shè)置和查詢文件的最近修改時間

等。構(gòu)造文件流可以使用File類的對象作為參。

5^創(chuàng)建Application程序類FileTest.java,實現(xiàn)如下功能,從鍵盤輸入若

干個字符串,寫入文件c:\data.txt,然后再從該文件中逐個讀出字符輸

出,遇到空格即換行。

答案:

packageexample;

importjava.io.

publicclassFileTest{

/**

*@paramargs

★/

publicstaticvoidmain(String[]args)throwslOException{

//TODOAuto-generatedmethodstub

U1

StringfileName=C:Wdata.txt'rline;

try(

FileWriterwriter=newFileWriter(fileName);

System.out.printIn(ninputthestring:n);

BufferedReaderin=newBufferedReader(new

InputStreamReader(System.in));

writer.write(in.readLine());

writer.close();

BufferedReaderout=newBufferedReader(new

FileReader(fileName));

line=out.readLine();//讀取一彳了內(nèi)容

System.out.printIn(noutputcharacter:n);

while(line!=null)

System.out.printIn(line);

line=out.readLine();

}

out.close();

}

catch(lOExceptioniox){

System.out.printIn("Problemreading”+fileName);

)

)

第七章對象群體的組織

1、群體數(shù)據(jù)的組織以及Java的集合框架

2、數(shù)組、Collection、Map的區(qū)別以及優(yōu)缺點

答案:

數(shù)組的優(yōu)點:是Java提供的隨機訪問對象序列的最有效方法

是一個簡單的線性序列,訪問元素的速度較快

數(shù)組的缺點:大小自創(chuàng)建以后就固定了,在其整個生存期內(nèi)其大小不可改

變,數(shù)組元素只能是同一類型

集合

可動態(tài)改變其大小

可在序列中存儲不同類型的數(shù)據(jù)

3、Arrays類、Vector類、Enumeration接口、Iterator接口、HashTable

類的用法

4、添加Lx7_l.java類,從鍵盤逐行輸入若干個字符串,以“end”為結(jié)束,

把輸入的字符串存放在向量對象中,然后把這些字符串逆序輸出。

第八章線程

1.線程的概念

答案:一個程序中多段代碼同時并發(fā)執(zhí)行,稱為多線程

2.如何通過Thread類和Runnable接口創(chuàng)建線程

答案:在Java程序中創(chuàng)建多線程的方法之一是繼承Thread類,封裝了Java

程序中一個線程對象需要擁有的屬性和方法。從Thread類派生一個子類,

并創(chuàng)建這個子類的對象,就可以產(chǎn)生一個新的線程。

實現(xiàn)Runnable接口的類的對象可以用來創(chuàng)建線程,這時start方法啟動

此線程就會在此線程上運行run()方法

在編寫復(fù)雜程序時相關(guān)的類可能已經(jīng)繼承了某個基類,而Java不支持多

繼承,在這種情況下,便需要通過實現(xiàn)Runnable接口來生成多線程

3.掌握線程同步的方法

答案:Java使用的同步機制是監(jiān)視器

a)每個對象都只有一個“鎖旗標(biāo)”與之相連,利用多線程對其的爭奪可

實現(xiàn)線程間的互斥操作

b)當(dāng)線程A獲得了一個對象的鎖旗標(biāo)后,線程B必須等待線程A完成規(guī)

定的操作、并釋放出鎖旗標(biāo)后,才能獲得該對象的鎖旗標(biāo),并執(zhí)行線

程B中的操作

4.線程優(yōu)先級的概念,以及基于優(yōu)先級的線程調(diào)度

5、指出Ex8」2程序的運行結(jié)果:

publicclassEx8_12

(

publicstaticvoidmain(String[]args)throwslOException

(

TestThreadt=newTestThread();

t.start();

newBufferedReader(newInputStreamReader(System,in)).readLineO;〃等待

鍵盤輸入

t.stopme();〃調(diào)用stopme方法結(jié)束t線程

)

)

classTestThreadextendsThread

(

privatebooleanflag二true;

publicvoidstopme()〃在此方法中控制循環(huán)條件

(

flag=false;

)

publicvoidrun()

(

inti=0;

while(flag)

{

System.out.printin(i++);〃如果flag為真則一直顯示遞增

}

5、指出Ex8_3程序的運行結(jié)果:

答案:一直顯示遞增整數(shù)

publicclassEx8_3

(

publicstaticvoidmain(String[]args)

{

System,out.println(,/mainthreadstarts");

FactorialThreadt=newFactorialThread(lO);

newThread(t).start();

System,out.printin(z/newthreadstarted,mainthreadends〃);

}//endmain

//classFactorialThreadcontrolsthreadexecution

classFactorialThreadimplementsRunnable

privateintnum;

publicFactorialThread(intnum)

(

this.num=num;

)

publicvoidrun()

(

inti=num;

intresult=l;

while(i>0)

(

result=result*i;

i=i-l;

}

System,out.printin(Z/Thefactorialof〃+num+〃isz,+result);

System,out.printin(/?newthreadends");

)

思考:上述兩個程序?qū)崿F(xiàn)線程有何不同?

第九章圖形用戶界面

1、Swing與AWT包

2、Swing頂層容器、中間層容器、原子容器的概念

Swing提供三個頂層容器的類

>JFrame實現(xiàn)單個主窗口

>JDialog實現(xiàn)一個二級窗口(對話框)

>JApplet在瀏覽器窗口中實中實現(xiàn)一個applet顯示區(qū)域

3、布局管理器

答案:布局設(shè)計是用來安排一個容器中若干個組件的相對位置。容器中組件的

布局是由布局管理器來負(fù)責(zé)的。每個容器都有一個默認(rèn)的布局管理器,用

戶可用特定的方法來改變?nèi)萜鞯牟季止芾砥鳌?/p>

通常有如下5種布局管理器:

(1)FlowLayout(順序布局)

(2)BorderLayout(邊界布局)

(3)CardLayout(卡片布局)

(4)GridLayout(網(wǎng)格布局)

(5)GirdBagLayout(復(fù)雜網(wǎng)格布局)

4、實現(xiàn)事件處理的方法

答案:事件源:圖形用戶界面上可能發(fā)生事件的每個構(gòu)件(組件)稱為事件源

事件對象:指封裝了有關(guān)事件的若干信息的事件類的對象。

事件監(jiān)聽者:某種監(jiān)聽者類的對像。

5、Applet小應(yīng)用程序的特點,如何運行?

答案:Applet與Application不同,相比有如下3個特點

1.Applet的主類必須是類庫中已定義的Applet類的子類。

2.Applet不是完整獨立的程序,而是一個已經(jīng)構(gòu)建好的框架程序中的

一個模塊。

3.Applet可以直接利用瀏覽器或者Appletviewer所提供的圖形用戶界

面來顯示運行結(jié)果。

Applet的工作原理

L編輯好Applet,存放于.Java的文件中。

2.編譯Applet生成字節(jié)碼文件(.class),通常使用javac命令。

3.將字節(jié)碼文件嵌入到HTML文件,該文件被保存在一個WWW服務(wù)器上。

4.某個瀏覽器向服務(wù)器請求下載嵌入Applet的HTML文件時,將該文

件下載到客戶端。

5.使用瀏覽器解釋HTML文件中的各種標(biāo)記,再利用其自身擁有的Java

解釋器直接執(zhí)行字節(jié)碼文件,并將結(jié)果輸出顯示在圖形界面上。

6、Applet的生命周期及主要方法?每個方法何時執(zhí)行?

答案:Applet類的主要方法如下

Init()方法:用來完成初始化操作。

Star。方法:該方法是啟動瀏覽器將Applet主線程運行。

Paint()方法:用來輸出顯示的,即將結(jié)果輸出顯示在Applet界面上,

可顯示文本、圖形和其他界面元素。

Stop。方法:該方法是在暫停執(zhí)行Applet前執(zhí)行的一種方法。

Destroy。方法:該方法是用來終止Applet的執(zhí)行,執(zhí)行該方法將會釋

放Applet占有的一切資源,關(guān)閉連接之類的操作。

7>創(chuàng)建Lx9_l應(yīng)用程序,用swing包創(chuàng)建窗體,并在窗體中創(chuàng)建如下用戶界面,并實現(xiàn)

簡單計原器功能。

packageexample;

importjava.awt.Color;

importjava.awt.Dimension;

importjava.awt.EventQueue;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjavax.swing.ButtonGroup;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

importjavax.swing.JOptionPane;

importjavax.swing.JRadioButton;

importjavax.swing.JTextField;

publicclasscalextendsJFrame{

/**

*

*/

privatestaticfinallongserialVersionUID=IL;

privateButtonGroupbuttonGroup_l=newButtonGroup();

privateJTextFieldresult;

privateJTextFieldtextField_l;

privateJTextFieldtextField;

privateJFrameframe;

/**

*Launchtheapplication

*@paramargs

*/

publicstaticvoidmain(Stringargs[]){

EventQueue.invokeLater(newRunnable(){

publicvoidrun(){

try(

calwindow=newcal();

window,frame.setVisible(true);

}catch(Exceptione){

e.printStackTrace();

)

)

});

}

/**

*Createtheapplication

*/

publiccal(){

createContents();

/**

*Initializethecontentsoftheframe

*/

privatevoidcreateContents(){

frame=newJFrame();

frame.getContentPane().setBackground(Color.LIGHT_GRAY);

frame.getContentPane().setLayout(null);

frame.setTitle(〃計算器〃);

frame.setBounds(100,100,429,375);

frame.setDefaultCloseOperation(JFrame.EXIT_0N_CL0SE);

finalJLabellabel=newJLabel();

label.setBounds(101,43,68,50);

label.setPreferredSize(newDimension(2,50));

label.setText(〃第一個數(shù):〃);

frame.getContentPane().add(label);

finalJLabellabel_l=newJLabel();

label_l.setText(〃第二個數(shù):〃);

label1.setBounds(101,99,68,38);

frame.getContentPane().add(label_l);

textField=newJTextFieldO;

textField.setBounds(175,57,104,22);

frame.getContentPane().add(textField);

textField_l=newJTextField();

textField_l.setBounds(175,107,104,22);

frame.getContentPane().add(textField_l);

finalJLabellabel_2=newJLabel();

label_2.setText(〃運算〃);

label_2.setBounds(101,166,66,18);

frame.getContentPane().add(label2);

finalJRadioButtonradioButton=newJRadioButtonO;

buttonGroup_l.add(radioButton);

radioButton.setBackground(Color.LIGHTGRAY);

radioButton.setText(〃+〃);

radioButton.setBounds(143,162,38,26);

frame.getContentPane().add(radioButton);

finalJRadioButtonradioButton_l=newJRadioButton();

buttonGroup1.add(radioButton1);

radioButton_l.setBackground(Color.LIGHT_GRAY);

radioButton_1.setText(〃一〃);

radioButton_l.setBounds(187,162,38,26);

frame.getContentPane().add(radioButton1);

finalJRadioButtonradioButton_2=newJRadioButton();

buttonGroup_l.add(radioButton_2);

radioButton_2.setBackground(Color.LIGHTGRAY);

radioButton_2.setText(z,Xz,);

radioButton_2.setBounds(229,162,38,26);

frame.getContentPane().add(radioButton_2);

finalJRadioButtonradioButton_3=newJRadioButton();

buttonGroup_l.add(radioButton_3);

radioButton_3.setBackground(Color.LIGHT_GRAY);

radioButton_3.setText(〃+〃);

radioButton_3.setBounds(273,162,38,26);

frame.getContentPane().add(radioButton_3);

finalJLabellabel3=newJLabel();

label_3.setText(〃運算結(jié)果:〃);

label_3.setBounds(101,282,66,18);

frame.getContentPane().add(label_3);

finalJButtonbutton=newJButton();

button.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEventargO){

doublesi,s2,s=0;

try{

sl=Double.parseDouble(textField.getText());

s2=Double.parseDouble(textField_l.getText());

if(radioButton.isSelectedO)

s=sl+s2;

else

if(radioButton_1.isSelectedO)

s=sl-s2;

else

if(radioButton_2.isSelectedO)

s=sl*s2;

else

s=sl/s2;

result.setText(String.valueOf(s));

}catch(Exceptione){

JOptionPane.showMessageDialog(null,〃無效數(shù)據(jù)!〃);

textField_l.setText(〃〃);result.setText(〃〃);

)

}

});

button.setText(〃計算〃);

bu

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論