




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鎮(zhèn)江資格證模擬考試
- 公司合作養(yǎng)豬合同范本
- 冷鐓模具合同范本
- 冰箱售后服務(wù)合同范本
- 農(nóng)村水田改造合同范本
- 代理交易合同范本
- 兄妹贈予房產(chǎn)合同范本
- 北京出租車司機合同范本
- 農(nóng)村承包經(jīng)營戶合同范本
- 臨時店面員工合同范本
- DB11 938-2022 綠色建筑設(shè)計標(biāo)準(zhǔn)
- 部編版語文八年級下冊第六單元名著導(dǎo)讀《鋼鐵是怎樣煉成的》問答題 (含答案)
- 2022譯林版新教材高一英語必修二單詞表及默寫表
- 全國青少年機器人技術(shù)等級考試:二級培訓(xùn)全套課件
- 九種中醫(yī)體質(zhì)辨識概述課件
- (外研版)英語四年級下冊配套同步練習(xí) (全書完整版)
- 小學(xué)數(shù)學(xué)計算能力大賽實施方案
- 古詩詞誦讀《虞美人》課件-統(tǒng)編版高中語文必修上冊
- 文物學(xué)概論-中國古代青銅器(上)
- 制作拉線課件
- 某物業(yè)公司能力素質(zhì)模型庫(參考)
評論
0/150
提交評論