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

下載本文檔

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

文檔簡(jiǎn)介

課后作業(yè)

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

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

答案:機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言、面向?qū)ο蟮恼Z(yǔ)言

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

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

3.Java語(yǔ)言的特點(diǎn)

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

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

4.為什么Java語(yǔ)言是跨平臺(tái)的?

答案:因?yàn)镴ava程序的最終實(shí)現(xiàn)需要經(jīng)過(guò)編譯和解釋兩個(gè)步驟,Java語(yǔ)言的

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

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

只要有安裝Java解釋器的機(jī)器Java程序都可以運(yùn)行,所以它是跨平臺(tái)的面向

對(duì)象的程序設(shè)計(jì)語(yǔ)言。

5.Java2的SDK是什么?

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

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

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

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

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

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

Jbuilder^MicrosoftVisualJ++、IBM:VisualAgeforJava^SunONEStudio

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

答案:Java語(yǔ)言源程序的變異過(guò)程主要進(jìn)行兩件工作:

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

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

件。

2.通過(guò)編譯來(lái)引入Java類庫(kù)中已編好的模塊,為了方便編程,Java類庫(kù)

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

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

9.Application有哪些特點(diǎn)?如何運(yùn)行Application程序?

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

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

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

c.Java程序中的所有方法都是屬于某個(gè)類的,沒(méi)有不屬于某個(gè)類的方

法。

2.Java程序在書寫上的特點(diǎn)

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

知義”。

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

c.合理進(jìn)行縮進(jìn)和對(duì)齊,使得程序顯得層次分明。

d.一條語(yǔ)句寫一行,長(zhǎng)語(yǔ)句可以續(xù)行。

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

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

編譯、運(yùn)行等幾個(gè)步驟。

a.編輯Java源程序

b.編譯Java源程序

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

10.編寫Application程序,計(jì)算并輸出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強(qiáng)制轉(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]);

)

}

第二章類與對(duì)象的基本概念

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

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

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

于維護(hù)和復(fù)用

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

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

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

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

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

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

本質(zhì)的特征。

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

成一個(gè)封裝體。

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

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

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

4.類和對(duì)象的概念

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

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

對(duì)象就是對(duì)客觀世界中的實(shí)體的映射。

5.如何定義類

答案:定義類的格式

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

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

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

volatile

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

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

synchronized

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

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

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

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

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

答案:首先,說(shuō)明對(duì)象。

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

最后,為對(duì)象初始化。

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

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

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

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

答案:當(dāng)一個(gè)對(duì)象在程序中不再被使用時(shí),就成為一個(gè)無(wú)用對(duì)象,Java運(yùn)行時(shí)

系統(tǒng)通過(guò)垃圾收集器周期性地釋放無(wú)用對(duì)象所使用的內(nèi)存,Java運(yùn)行時(shí)系統(tǒng)會(huì)

在對(duì)對(duì)象進(jìn)行自動(dòng)垃圾回收前,自動(dòng)調(diào)用對(duì)象的finalize。方法

12、定義Student類

①屬性

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

name:String對(duì)象,表示一個(gè)人的姓名

sex:char類型,表示性別

②方法

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

publiclonggetld():返回學(xué)號(hào)

publicStringgetName():返回姓名

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

publicchargetSex():返回性別

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

答案:

packageexample;

publicclassStudent{

privatelong工d;//學(xué)號(hào)

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完成如下測(cè)試功能:

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

學(xué)號(hào):2503123

姓名:李麗

性別:女

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

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

答案:

packageexample;

importexample.student;

publicclassTestStudent{

publicstaticvoidmain(String[]args){

studentaGirl=newstudent();

aGirl.setId(2503123);

aGirl.setName("李麗”);

aGirl.setSex「女,);

System.out.print("學(xué)號(hào):"+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)的實(shí)現(xiàn)

2、Java的異常的處理機(jī)制

答案:

1.拋出(throw)異常

在方法的運(yùn)行過(guò)程中,如果發(fā)生了異常,則該方法生成一個(gè)代表該異常的對(duì)象

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

2.捕獲(catch)異常

運(yùn)行時(shí)系統(tǒng)在方法的調(diào)用棧中查找,從生成異常的方法開(kāi)始進(jìn)行回溯,直到找

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

3、方法的重載

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

4、編寫Application程序類ArrayApp,實(shí)現(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、在項(xiàng)目中添加一個(gè)shape包的Rectangle類,其中包括:

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

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

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

個(gè)屬性賦初值)。

publicRectangle(){}

publicRectangle(doublewidth,doubleheight){}

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

④在Rectangle類中添加兩個(gè)方法計(jì)算矩形的周長(zhǎng)和面積。

publicdoubleperimeter。{}〃計(jì)算周長(zhǎng)

publicdoublearea(){}〃計(jì)算面積

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

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

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

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

{}輸出該矩形的周長(zhǎng)。格式如下:第:個(gè)矩形面積: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("第一個(gè)矩;/診周長(zhǎng):n+rl.perimeter());

System.out.printlnO;

newRectangle(12.3,32.1);

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

}

第四章類的重用

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

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

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

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

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

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

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

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

藏。

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

方法,稱為方法覆蓋。

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

答案:

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

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

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

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

類的構(gòu)造方法時(shí)會(huì)自動(dòng)調(diào)用父類的默認(rèn)構(gòu)造方法(即無(wú)參的構(gòu)造方法)

4、Object類和常用方法

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

次最高點(diǎn)。

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

6、抽象類、抽象方法的概念和特點(diǎn)

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

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

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

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

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

算測(cè)評(píng)成績(jī),測(cè)評(píng)成績(jī)=二門課平均分)

答案:

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方

法(計(jì)算測(cè)評(píng)成績(jī),測(cè)評(píng)成績(jī)=二門課平均分+3)

答案:

packageshape;

publicclassStudentXWextendsStudent{

publicfloattestScore(){

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

returnScore;

}

}

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

個(gè)StudentXW對(duì)象(學(xué)生信息:050101002,李四,86,84)、分別計(jì)算并輸出他們的評(píng)

測(cè)評(píng)成績(jī)。

|姓名:張三測(cè)評(píng)成績(jī):80.0

I姓名:李四測(cè)評(píng)成績(jī):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+“"+”測(cè)評(píng)成績(jī):

n+aboy.testScore());

StudentXWaboy2=newStudentXW();

aboy2.Id=050101002;

aboy2,Name="李四,

aboy2.EnScore=86;

aboy2.MaScore=84;

System.out.printin("姓名:n+aboy2.Name+n”+”測(cè)評(píng)成績(jī):

n+aboy2.testScore());

}

14、創(chuàng)建Application程序類ArrayApp,實(shí)現(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ū)ο蟮囊粋€(gè)重要機(jī)制,實(shí)現(xiàn)多繼承,同時(shí)免除C++中的多繼承那

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

2、接口的定義

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

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

3、如何使用接口

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

用新類來(lái)創(chuàng)建對(duì)象,利用接口設(shè)計(jì)類的過(guò)程,稱為接口的實(shí)現(xiàn),使用

implements關(guān)鍵字

4、塑型的概念

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

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

變其類型。

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

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

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

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

差別的。

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

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

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

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

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

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

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

interfaceShape2D{//聲明Shape2D接口

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

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

)

思考:

?為何接口是一個(gè)“純”抽象類?

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

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

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

classCircleimplementsShape2D

(

doubleradius;

publicCircle(doubler)

(

radius=r;

)

publicdoublearea()

return(pi*radius*radius);

)

思考:

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

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

classRectangleimplementsShape2D

(

intwidth,height;

publicRectangle(intw,inth)

(

width=w;

height=h;

)

publicdoublearea()

(

return(width*height);

)

)

思考:

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

publicdoublearea()

(

return(width*height);

)

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

publicclassInterfaceTester{

publicstaticvoidmain(Stringargs[]){

Rectanglerect=newRectangle(5,6);

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

Circlecir=newCircle(2.0);

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

)

)

思考:

?如何理解接口能使在看起來(lái)不相干的對(duì)象之間定義共同行為?

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

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

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

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

輸入/輸出流可以從以下幾個(gè)方面進(jìn)行分類

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

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

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

2、讀寫文本文件、二進(jìn)制文件的方法

3、處理流的概念及用法

4、File類及用法

答案:表示磁盤文件信息

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

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

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

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

干個(gè)字符串,寫入文件c:\data.txt,然后再?gòu)脑撐募兄饌€(gè)讀出字符輸

出,遇到空格即換行。

答案:

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);

)

)

第七章對(duì)象群體的組織

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

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

答案:

數(shù)組的優(yōu)點(diǎn):是Java提供的隨機(jī)訪問(wèn)對(duì)象序列的最有效方法

是一個(gè)簡(jiǎn)單的線性序列,訪問(wèn)元素的速度較快

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

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

集合

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

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

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

類的用法

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

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

第八章線程

1.線程的概念

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

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

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

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

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

實(shí)現(xiàn)Runnable接口的類的對(duì)象可以用來(lái)創(chuàng)建線程,這時(shí)start方法啟動(dòng)

此線程就會(huì)在此線程上運(yùn)行run()方法

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

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

3.掌握線程同步的方法

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

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

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

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

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

程B中的操作

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

5、指出Ex8」2程序的運(yùn)行結(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程序的運(yùn)行結(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");

)

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

第九章圖形用戶界面

1、Swing與AWT包

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

Swing提供三個(gè)頂層容器的類

>JFrame實(shí)現(xiàn)單個(gè)主窗口

>JDialog實(shí)現(xiàn)一個(gè)二級(jí)窗口(對(duì)話框)

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

3、布局管理器

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

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

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

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

(1)FlowLayout(順序布局)

(2)BorderLayout(邊界布局)

(3)CardLayout(卡片布局)

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

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

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

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

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

事件監(jiān)聽(tīng)者:某種監(jiān)聽(tīng)者類的對(duì)像。

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

答案:Applet與Application不同,相比有如下3個(gè)特點(diǎn)

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

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

一個(gè)模塊。

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

面來(lái)顯示運(yùn)行結(jié)果。

Applet的工作原理

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

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

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

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

件下載到客戶端。

5.使用瀏覽器解釋HTML文件中的各種標(biāo)記,再利用其自身?yè)碛械腏ava

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

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

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

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

Star。方法:該方法是啟動(dòng)瀏覽器將Applet主線程運(yùn)行。

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

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

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

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

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

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

簡(jiǎn)單計(jì)原器功能。

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(〃計(jì)算器〃);

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(〃第一個(gè)數(shù):〃);

frame.getContentPane().add(label);

finalJLabellabel_l=newJLabel();

label_l.setText(〃第二個(gè)數(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(〃運(yùn)算〃);

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(〃運(yùn)算結(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,〃無(wú)效數(shù)據(jù)!〃);

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

)

}

});

button.setText(〃計(jì)算〃);

bu

溫馨提示

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