Java簡明教程-習(xí)題參考答案_第1頁
Java簡明教程-習(xí)題參考答案_第2頁
Java簡明教程-習(xí)題參考答案_第3頁
Java簡明教程-習(xí)題參考答案_第4頁
Java簡明教程-習(xí)題參考答案_第5頁
已閱讀5頁,還剩52頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Java簡明教程-習(xí)題參考答案Java簡明教程-習(xí)題參考答案Java簡明教程-習(xí)題參考答案Java簡明教程-習(xí)題參考答案編制僅供參考審核批準(zhǔn)生效日期地址:電話:傳真:郵編:參考答案第1章1.Java語言有哪些主要特點。平臺獨立性安全性多線程網(wǎng)絡(luò)化面向?qū)ο?.目前美國Sun公司提供的適用不同開發(fā)規(guī)模的JDK有哪些。目前Sun共提供了三種不同的版本:微平臺版J2ME(Java2PlatformMicroEdition),標(biāo)準(zhǔn)版J2SE(Java2PlatformStandardEdition)和企業(yè)版J2EE(Java2PlatformEnterpriseEdition),這三種版本分別適用于不同的開發(fā)規(guī)模和類型,對于普通Java開發(fā)人員和一般學(xué)習(xí)者來說,選用標(biāo)準(zhǔn)版J2SE就可以了,學(xué)會了J2SE,再學(xué)J2ME或J2EE就比較容易上手,因為它們之間雖有所側(cè)重,但相似之處很多,尤其是語言本身是一樣的,都是Java。3.JavaApplication的開發(fā)步驟有哪些。JavaApplication的開發(fā)步驟: (1)下載JDK軟件并安裝; (2)配置相應(yīng)的環(huán)境變量(path和classpath); (3)編寫Java源程序(文本編輯器或集成開發(fā)環(huán)境IDE); (4)編譯Java源程序,得到字節(jié)碼文件(javac*.java); (5)執(zhí)行字節(jié)碼文件(java字節(jié)碼文件名)。4.什么是環(huán)境變量,設(shè)置環(huán)境變量的主要目的是什么。環(huán)境變量的配置主要是為了進(jìn)行“尋徑”,也即讓程序能找到它需要的文件,所以設(shè)置的內(nèi)容就是一些路徑。5.不參考書本,試著編寫一個簡單的JavaApplication程序,實現(xiàn)在Dos窗口輸出“WelcometoNanjingCity!”字符串。并對該程序進(jìn)行編譯和運(yùn)行。 publicclassHello{ publicstaticvoidmain(Stringargs[]) { "WelcometoNanjingCity } }6.編寫一個JavaApplication程序,實現(xiàn)分行顯示字符串“WelcometoNanjingCity”中的四個單詞。 publicclassHello{ publicstaticvoidmain(Stringargs[]) { "Welcome"); "to"); "Nanjing");"City!"); } }第2章1.Java語言對于合法標(biāo)識符的規(guī)定是什么指出以下哪些為合法標(biāo)識符。 aa23a*a_a$ainta%在Java語言中,標(biāo)識符必須以字母、美元符號或者下劃線打頭,后接字母、數(shù)字、下劃線或美元符號串。另外,Java語言對標(biāo)識符的有效字符個數(shù)不做限定。合法的標(biāo)識符:aa2 _a$a2.變量的涵義是什么變量名與變量值的關(guān)系在程序執(zhí)行過程中其值可以改變的數(shù)據(jù),稱為變量,它本質(zhì)上代表了內(nèi)存中的一小塊空間。每個變量都必須有對應(yīng)的名稱來標(biāo)識它,即變量名,而變量空間所存放的數(shù)據(jù)則稱為變量值。3.Java語言提供哪些基本的數(shù)據(jù)類型,為什么要提供這些不同的數(shù)據(jù)類型布爾型:boolean整型:byte、short、int以及l(fā)ong浮點型(實型):float以及double字符型:char數(shù)據(jù)類型代表了數(shù)據(jù)的存儲格式和處理方式,雖然嚴(yán)格來說計算機(jī)只能識別“0”和“1”,但是,有了數(shù)據(jù)類型以后,計算機(jī)的識別能力就被人為擴(kuò)展了,它能夠識別整數(shù)、實數(shù)以及字符等。4.賦值語句的涵義是什么 數(shù)據(jù)傳遞。5.?dāng)?shù)據(jù)類型強(qiáng)制轉(zhuǎn)換的原則是什么如何轉(zhuǎn)換 對于變窄轉(zhuǎn)換,如long到short、double到float,或者不兼容轉(zhuǎn)換:float到short、char到short等,則需要進(jìn)行強(qiáng)制轉(zhuǎn)換。 floatf=; shortb; b=(short)f;(強(qiáng)制轉(zhuǎn)換)6.每一條程序語句都應(yīng)以分號來結(jié)束,這個分號能否用中文輸入模式下輸入的分號,為什么 不能。首先中英文輸入模式下輸入的分號是不同的,不但外觀不同,其存儲所需的空間也是不同的,Java編譯器只能識別英文的分號,對于中文分號,將會報錯。第3章1.假定乘坐飛機(jī)時,每位顧客可以免費托運(yùn)20kg以內(nèi)的行李,超過部分按每公斤收費元,以下是相應(yīng)的計算收費程序。該程序存在錯誤,請找出。 publicclassTest { publicstaticvoidmain(String[]args)throwsIOException { floatw,fee; ;語句2.有一條長的階梯,如果每步2階,則最后剩1階,每步3階則剩2階,每步5階則剩4階,每步6階則剩5階,只有每步7階的最后才剛好走完,一階不剩,問這條階梯最少共有多少階找出以下求解程序的錯誤所在。publicclassTest{ publicstaticvoidmain(String[]args) { inti; while(i%2==1&&i%3==2&&i%5==4&&i%6==5&&i%7==0) { i++; } "這條階梯最少有:"+i+"階"); }} 1)變量i應(yīng)進(jìn)行初始化。 2)while循環(huán)的條件表達(dá)式應(yīng)再加上“非”,這樣才符合邏輯。3.試用單分支結(jié)構(gòu)設(shè)計一判斷用戶輸入值X,當(dāng)X大于零時求X值平方根,否則不執(zhí)行任何操作的程序。import.*;import.*;publicclassTest{ publicstaticvoidmain(String[]args)throwsIOException { floatx; InputStreamReaderreader=newInputStreamReader;BufferedReaderinput=newBufferedReader(reader); "請輸入x:");Stringtemp=();x=(temp);;publicclassTest{ publicstaticvoidmain(String[]args)throwsIOException { charA,B,c1,c2; c1=(char) c2=(char) if(c1>c2) { A=c2; B=c1; }else { A=c1; B=c2; } "A="+A+"B="+B); }}5.用窮舉法求出3位數(shù)中百、十、個位數(shù)的立方和就是該數(shù)的數(shù)。publicclassTest{ publicstaticvoidmain(String[]args) { inta,b,c,x=100; while(x<1000){a=x%10;b=(x%100-a)/10;c=(x-x%100)/100;if(a*a*a+b*b*b+c*c*c==x)x+=1;} }}6.編程實現(xiàn)打印以下圖案:************************************ publicclassTest{ publicstaticvoidmain(String[]args) { inti,j,k;;publicclassTest{publicstaticvoidmain(String[]args)throwsIOException{ charsex='f'; switch(sex){case'm':"男性");break;case'f':"女性");case'u':"未知");}}}女性未知10.讀程序,寫結(jié)果。publicclassTest{ publicstaticvoidmain(String[]args) { inti,s=0;for(i=1;i<=100;i++){if(i%3==0)continue;s+=i;}"s="+s); }}s=336711.讀程序,寫結(jié)果。publicclassTest{ publicstaticvoidmain(String[]args) { inti,s=0;for(i=1;i<=100;i++){s+=i;if(s>100)break;}"s="+s); }}s=10512.個位數(shù)是6,且能被3整除的5位數(shù)有多少publicclassTest{ publicstaticvoidmain(String[]args) { inti=10006,count=0; while(i<) {if(i%3==0) count++; i+=10; } "符合條件的數(shù)共有"+count+"個"); }}13.用嵌套循環(huán)結(jié)構(gòu),設(shè)計一模擬電子鐘的程序。 提示:定義三個變量分別代表“小時”、“分”和“秒”,根據(jù)電子鐘分、秒、小時之間的關(guān)系,采用三重循環(huán)來控制各量的增加,并由輸出語句將變化中的三個量分別予以輸出顯示,即為一模擬數(shù)字電子鐘。此外,Java語言提供的延時方法為(1000);1000的單位為毫秒,即延時1秒。import.*;publicclassTest{ publicstaticvoidmain(String[]args)throwsInterruptedException { inthour=12,min=0,sec=0; while(hour<24) { while(min<60) { while(sec<60) {sec++; (1000); "時-"+min+"分-"+sec+"秒"); } sec=0; min++; } min=0; hour++; } }}第4章1.以下敘述中不正確的是______。A、在方法中,通過return語句傳回方法值B、在一個方法中,可以執(zhí)行有多條return語句,并返回多個值C、在Java中,主方法main()后的一對圓括號中也可以帶有參數(shù)D、在Java中,調(diào)用方法可以在語句中完成 B2.以下正確的描述是______。 A、方法的定義不可以嵌套,但方法的調(diào)用可以嵌套B、方法的定義可以嵌套,但方法的調(diào)用不可以嵌套C、方法的定義和方法的調(diào)用均不可以嵌套D、方法的定義和方法的調(diào)用均可以嵌套 A3.以下正確的說法為______。 A、在不同方法中不可以使用相同名字的變量B、實際參數(shù)可以在被調(diào)方法中直接使用C、在方法內(nèi)定義的任何變量只在本方法范圍內(nèi)有效D、在方法內(nèi)的復(fù)合語句中定義的變量只在本方法語句范圍內(nèi)有效 C4.按Java語言的規(guī)定,以下正確的說法是______。 A、實參不可以是常量,變量或表達(dá)式B、形參不可以是常量,變量或表達(dá)式C、實參與其對應(yīng)的形參占用同一個存儲單元D、形參是虛擬的,不占用存儲單元D5.一個JavaApplication程序中有且只有一個方法,它是整個程序的執(zhí)行入口。main()方法6.方法通??梢哉J(rèn)為由兩部分組成,它們是和。方法頭和方法體7.讀程序?qū)懡Y(jié)果。publicclassTest{staticvoidm(intx,inty,intz){x=111;y=222;z=333;}publicstaticvoidmain(Stringargs[]){intx=100,y=200,z=300;m(x,y,z);}}x=100y=200z=3008.編寫一個判斷某個整數(shù)是否為素數(shù)的方法。publicbooleanprime(intx){for(intj=2;j<x;j++);publicclassTest{publicstaticvoidmain(String[]args){inta=0;"請輸入數(shù)a:");try{BufferedReaderbr=newBufferedReader(newInputStreamReader);a=());}catch(IOExceptione){}intb=0;"請輸入數(shù)b:");try{BufferedReaderbr=newBufferedReader(newInputStreamReader);b=());}catch(IOExceptione){}if(a<=0||b<=0)"輸入不合法!");"最大公約數(shù)為:"+Gys(a,b));"最小公倍數(shù)為:"+Gbs(a,b));}publicstaticintGys(inta,intb){intr=0;if(a<b){r=a;b=a;a=r;}inti=1;while(i!=0){i=a%b;a=b;b=i;}returna;}publicstaticintGbs(inta,intb){ intab=a*b;intr=0;if(a<b){r=a;b=a;a=r;}inti=1;while(i!=0){i=a%b;a=b;b=i;}returnab/a;}}10.以下程序執(zhí)行后的輸出為。publicclassTest{staticintm1(inta,intb){intc;a+=a;b+=b;c=m2(a,b);return(c*c);}staticintm2(inta,intb){intc;c=a*b%3;return(c);}publicstaticvoidmain(String[]args){ intx=1,y=3,z;z=m1(x,y);"z="+z);}}z=011.編寫一個方法,實現(xiàn)求某整數(shù)的各位數(shù)字之和的功能。import.*;publicclassTest{publicstaticvoidmain(String[]args){inti,a=0,s=0;"請輸入數(shù)a:");try{BufferedReaderbr=newBufferedReader(newInputStreamReader);a=());}catch(IOExceptione){}for(i=10;a%i!=a;i*=10){ s+=(a%i)/(i/10);}s+=a/(i/10);"各位數(shù)之和為"+s);}}12.編寫完成十進(jìn)制整數(shù)到八進(jìn)制的轉(zhuǎn)換方法。import.*;publicclassTest{publicstaticvoidmain(String[]args){inti,k,a=0,d,s=0;"請輸入數(shù):");try{BufferedReaderbr=newBufferedReader(newInputStreamReader);a=());}catch(IOExceptione){}d=a%8; s+=d;k=10;for(i=64;a-d!=0;i*=8){ s+=(a-d)%i*8/i*k; k*=10; d=a%i;}"八進(jìn)制數(shù)為"+s);}}13.用于指出數(shù)組中某個元素的數(shù)字被叫做;數(shù)組元素之所以相關(guān),是因為它們具有相同的和。 下標(biāo);數(shù)組名和數(shù)據(jù)類型。14.?dāng)?shù)組intresults[]=newint[6]所占存儲空間是字節(jié)。 2415.使用兩個下標(biāo)的數(shù)組被稱為數(shù)組,假定有如下語句:floatscores[][]={{1,2,3},{4,5},{6,7,8,9}};則的值為:,scores[1].length的值為:,scores[1][1]的值為:。 二維;3;2;5。16.從鍵盤上輸入10個雙精度浮點數(shù)后,求出這10個數(shù)的和以及它們的平均值。要求分別編寫相應(yīng)求和及求平均值的方法。import.*;publicclassTest{publicstaticvoidmain(String[]args)throwsIOException{ InputStreamReaderreader=newInputStreamReader;BufferedReaderinput=newBufferedReader(reader);Stringtemp; doublex[]=newdouble[10];for(inti=0;i<10;i++) {temp=();x[i]=(temp); } S(x); Avg(x); } publicstaticvoidS(doublex[]) { ;publicclassScores{publicstaticvoidmain(String[]args)throwsIOException{ intsum=0;;publicclassTest{publicstaticvoidmain(String[]args)throwsIOException{ charc[]={'O','l','y','m','p','i','c','','G','a','m','e','s'};rever(c); } publicstaticvoidrever(charc[]) { chart; for(inti=0,j=;i<j;i++,j--) { t=c[i]; c[i]=c[j]; c[j]=t; } }}19.Java語言為什么要引入方法這種編程結(jié)構(gòu) 提高復(fù)用度,減少程序代碼量 促進(jìn)程序結(jié)構(gòu)化,提高可讀性和可維護(hù)性20.為什么要引入數(shù)組結(jié)構(gòu),數(shù)組有哪些特點,Java語言創(chuàng)建數(shù)組的方式有哪些為了便于處理一批同類型的數(shù)據(jù),Java語言引入了數(shù)組類型;首先,數(shù)組中的每個元素都是相同數(shù)據(jù)類型的;其次,數(shù)組中的這些相同數(shù)據(jù)類型元素是通過數(shù)組下標(biāo)來標(biāo)識的,并且該下標(biāo)是從0開始的;最后,數(shù)組元素在內(nèi)存中的存放是連續(xù)的。Java語言規(guī)定,創(chuàng)建數(shù)組可以有兩種方式:初始化方式和new操作符方式。初始化方式是指直接給數(shù)組的每一個元素指定一個初始值,系統(tǒng)自動根據(jù)所給出的數(shù)據(jù)個數(shù)為數(shù)組分配相應(yīng)的存儲空間,通常這樣創(chuàng)建數(shù)組的方式適用于數(shù)組元素較少的情形。對于數(shù)組比較大的情形,即數(shù)組元素過多,用初始化方式顯然不妥,這時應(yīng)采用第二種方式,即new操作符方式。第5章1.實現(xiàn)類MyClass的源碼如下:classMyClassextendsObject{privateintx;privateinty;publicMyClass(){x=0;y=0;}publicMyClass(intx,inty){.........}publicvoidshow(){"\nx="+x+"y="+y);}publicvoidshow(booleanflag){if(flag)"\nx="+x+"y="+y);else"\ny="+y+"x="+x);}protectedvoidfinalize()throwsthrowable{();}}

在以上的源代碼中,類MyClass的成員變量是____;構(gòu)造方法是____;對該類的一個實例對象進(jìn)行釋放時將調(diào)用的方法是____。(多選)(A)privateintx;(B)privateinty;(C)publicMyClass()(D)publicMyClass(intx,inty)(E)publicvoidshow()(F)publicvoidshow(booleanflag)(G)protectedvoidfinalize()throwsthrowable答案:AB CD G2.上題所聲明的類MyClass的構(gòu)造方法MyClass(intx,inty)的目的是使MyClass的成員變量privateintx,privateinty的值分別等于方法參數(shù)表中所給的值intx,inty。請寫出MyClass(intx,inty)的方法體(用兩條語句):__________________________;__________________________;答案:=x =y3.MyClass聲明同第一題。

設(shè)publicstaticvoidmain(Stringargs[])方法體如下:{ MyClassmyclass; ();}

編譯運(yùn)行該程序?qū)泻谓Y(jié)果(A)x=0y=0(B)y=0x=0(C)x=...y=...(x,y具體為何值是隨機(jī)的)(D)源程序有錯答案:D4.MyClass聲明同第一題。

設(shè)publicstaticvoidmain(Stringargs[])方法體如下:{MyClassmyclass=newMyClass(5,10);(false);}編譯運(yùn)行該程序?qū)泻谓Y(jié)果(A)x=0y=0(B)x=5y=10(C)y=10x=5(D)y=0x=0答案:C5.MyClass聲明同第一題。設(shè)publicstaticvoidmain(Stringargs[])方法體如下:{MyClassmyclass=newMyClass(5,10);(false);}現(xiàn)在想在main方法中加上一條語句來釋放myclass對象,應(yīng)用下面哪條(A)myclass=null;(B)free(myclass);(C)delete(myclass);(D)Java語言中不存在相應(yīng)語句答案:A6.假設(shè)已編寫好了類Class1:packagemypackage;publicclassClass1{……}

它存在文件中。

現(xiàn)在main方法所在的源程序如下:importmypackage; ……假設(shè)操作系統(tǒng)中的CLASSPATH環(huán)境變量已被設(shè)成"c:\java\lib\;.;",而main方法所在的源程序存在目錄c:\mydir中(當(dāng)前工作目錄為c:\mydir),那么文件應(yīng)存放在那個目錄中呢_________答案:c:\mydir\mypackage7.定義一個表示學(xué)生的類student,成員變量有學(xué)號、姓名、性別、年齡,方法有獲得學(xué)號、姓名、性別、年齡;修改年齡。書寫Java程序創(chuàng)建student類的對象及測試其方法的功能。答:publicclassstudent{ privateintstu_ID; privateStringname; privateStringsex; privateintold; student(intid,Stringname,Stringsex,intold){ stu_ID=id; =name; =sex; =old; } voidshow_id(){ "thestudentIDis:"+stu_ID); } voidshow_name(){ "thestudentnameis:"+name); } voidshow_sex(){ "thestudentsexis:"+sex); } voidshow_old(){ "thestudentoldis:"+old); } voidchange_old(intnewyear){ old=newyear; } publicstaticvoidmain(Stringargs[]){ studentLee=newstudent(,"LiMing","M",18); (); (); (); (); (20); (); }}8.根據(jù)下面的要求編程實現(xiàn)復(fù)數(shù)類Complex。 (1)復(fù)數(shù)類Complex的屬性: real代表復(fù)數(shù)的實數(shù)部分 imagin代表復(fù)數(shù)的虛數(shù)部分(2)復(fù)數(shù)類Complex的方法: Complex():構(gòu)造函數(shù),將實部、虛部都置為0;Complex(doubler,doublei):構(gòu)造函數(shù),創(chuàng)建復(fù)數(shù)對象的同時完成復(fù)數(shù)的實部、虛部的初始化,r為實部的初值,i為虛部的初值; getReal():獲得復(fù)數(shù)對象的實部; getImagin():獲得復(fù)數(shù)對象的虛部;complexAdd(ComplexNumber):當(dāng)前復(fù)數(shù)對象與形參復(fù)數(shù)對象相加,所得的結(jié)果也是復(fù)數(shù)值,返回給此方法的調(diào)用者;complexMinus(ComplexNumber):當(dāng)前復(fù)數(shù)對象與形參復(fù)數(shù)對象相減,所得的結(jié)果也是復(fù)數(shù)值,返回給此方法的調(diào)用者;complexMulti(ComplexNumber):當(dāng)前復(fù)數(shù)對象與形參復(fù)數(shù)對象相乘,所得的結(jié)果也是復(fù)數(shù)值,返回給此方法的調(diào)用者;toString():把當(dāng)前復(fù)數(shù)對象的實部、虛部組合成a+bi的字符串形式,其中a和b分別為實部和虛部的數(shù)據(jù)。答案:publicclassComplex{ privatedoublereal; privatedoubleimagin; Complex(){ real=0; imagin=0; } Complex(doubler,doublei){ real=r; imagin=i; } publicdoublegetReal(){ returnreal; } publicdoublegetImagin(){ returnimagin; } publicComplexcomplexAdd(ComplexNumber){ real=real+; imagin=imagin+; returnthis; } publicComplexcomplexMinus(ComplexNumber){ real=; imagin=; returnthis; } publicComplexcomplexMulti(ComplexNumber){ real=real*; imagin=imagin*; returnthis; } publicvoidtostring(){ "+"+imagin+"i"); } publicstaticvoidmain(Stringargs[]){ Complexa=newComplex(); Complexb=newComplex(3,4); Complexc=newComplex(2,3); (); (); (b); (); }}第6章1.B2.C3.接口中可以有的語句為____;(從ABCD中多選)一個類可以繼承____父類,實現(xiàn)____接口;一個接口可繼承____接口;(從EF中單選)接口____繼承父類,____實現(xiàn)其它接口;實現(xiàn)某個接口的類____當(dāng)作該接口類型使用;(從GH中單選)(A)intx;(B)inty=0;(C)publicvoidaa();(D)publicvoidbb(){"hello");}(E)僅一個(F)一個或多個(G)可以(H)不可以答案:BC;E;F;F;H;H;G4.解釋this和super的意義和作用。答:Java中,this用來引用當(dāng)前對象,與this類似,super用來引用當(dāng)前對象的父類。5.什么是繼承繼承的意義如何定義繼承關(guān)系答:繼承是一種由已有的類創(chuàng)建新類的機(jī)制。通過繼承可以實現(xiàn)代碼的復(fù)用,使程序的復(fù)雜性線性地增長,而不是隨規(guī)模增大呈幾何級數(shù)增長。由于父類代表了所有子類的共性,而子類既可繼承其父類的共性,又可以具有本身獨特的個性,在定義子類時,只要定義它本身所特有的屬性與方法就可以了。6.什么是多態(tài)Java程序如何實現(xiàn)多態(tài)有哪些實現(xiàn)方式答:多態(tài)性是指同名的不同方法在程序中共存。即為同一個方法定義幾個版本,運(yùn)行時根據(jù)不同情況執(zhí)行不同的版本。調(diào)用者只需使用同一個方法名,系統(tǒng)會根據(jù)不同情況,調(diào)用相應(yīng)的不同方法,從而實現(xiàn)不同的功能。多態(tài)性又被稱為“一個名字,多個方法”。多態(tài)性的實現(xiàn)有兩種方式:覆蓋實現(xiàn)多態(tài)性、重載實現(xiàn)多態(tài)性。7.利用多態(tài)性編程,實現(xiàn)求三角形、正方形和圓形面積。方法:抽象出一個共享父類,定義一函數(shù)為求面積的公共界面,再重新定義各形狀的求面積函數(shù)。在主類中創(chuàng)建不同類的對象,并求得不同形狀的面積。答:利用多態(tài)性編程,實現(xiàn)求三角形、正方形和圓形面積。方法:抽象出一個共享父類,定義一函數(shù)為求面積的公共界面,再重新定義各形狀的求面積函數(shù)。在主類中創(chuàng)建不同類的對象,并求得不同形狀的面積。abstractclassShape{abstractfloatarea();}classCircleextendsShape{publicfloatr;Circle(floatr){=r;}publicfloatarea(){return*r*r;}}classRectangleextendsShape{publicfloatwidth,height;Rectangle(floatw,floath){width=w;height=h;}publicfloatarea(){returnwidth*height;}}第7章1.String類型與StringBuffer類型的區(qū)別是什么答:String類型的字符串是對原字符串的拷貝進(jìn)行操作,而StringBuffer類型的字符串是對原字符串本身進(jìn)行操作的,操作后的結(jié)果會使原字符串發(fā)生改變。2.有如下四個字符串s1、s2、s3和s4: Strings1="HelloWorld!"; Strings2=newString("HelloWorld!"); s3=s1; s4=s2; 求下列表達(dá)式的結(jié)果是什么 s1==s3 s3==s4s1==s2(s2)(s2)答:下列表達(dá)式的結(jié)果是:false falsefalse true 03.下面程序輸出的結(jié)果是什么publicclassTest{ publicstaticvoidmain(String[]args){ Strings1="Ilikecat"; StringBuffersb1=newStringBuffer("ItisJava"); Strings2; StringBuffersb2; s2=("cat","dog"); sb2=(2,4); "s1為:"+s1); "s2為:"+s2);"sb1為:"+s1); "sb2為:"+s2); }}答:程序的輸出結(jié)果為:s1為:Ilikecats2為:Ilikedogsb1為:Ilikecatsb2為:Ilikedog4.設(shè)s1和s2為String類型的字符串,s3和s4為StringBuffer類型的字符串,下列那個語句或表達(dá)式不正確s1="HelloWorld!";s3="HelloWorld!";Strings5=s1+s2;StringBuffers6=s3+s4;Strings5=s1-s2;s1<=s2charc=());(),'y');答:語句或表達(dá)式不正確的有: s3="HelloWorld!"; StringBuffers6=s3+s4; Strings5=s1-s2;s1<=s25.StringTokenizer類的主要用途是什么該類有哪幾種重要的方法它們的功能是什么答:StringTokenizer類的主要用途是可以通過分析一個字符串把字符串分解成可被獨立使用的單詞。常用的方法有如下幾種:publicStringnextToken();功能:逐個獲取字符串中的單詞并返回該字符串。publicStringnextToken(Stringdelim)功能:以delim作為分隔符逐個獲取字符串中的單詞并返回該字符串。publicintcountTokens()功能:返回單詞計數(shù)器的。publicbooleanhasMoreTokens();功能:檢測字符串中是否還有單詞,如果還有單詞,則返回true,否則返回false。6.下列程序輸出的結(jié)果是什么import.*;publicclassHello{ publicstaticvoidmain(String[]args){ Strings="Friday;Saturday\SundayMonday,Tuesday"; StringTokenizerstk=newStringTokenizer(s,";\"); while()){ } }}解:輸出的結(jié)果是: FridaySaturdaySundayMonday,Tuesday7.編寫程序,在命令行輸入java類文件名1124627310356,求這一串?dāng)?shù)字的最大值和平均數(shù)。解:publicclassHello{ publicstaticvoidmain(String[]args){ doubletotal=0; intmax=0; for(inti=0;i<;i++){ total=total+(args[i]); if(max<(args[i])) max=(args[i]); } }}8.編寫程序,輸入兩個字符串,完成以下幾個功能:(1)求出兩個字符串的長度。(2)檢驗第一個串是否為第二個串的子串。(3)把第一個串轉(zhuǎn)化為byte類型并輸出。解:importimport.*;publicclassHello{ publicstaticvoidmain(String[]args){ Scannerscan=newScanner; "請輸入字符1"); Stringstr1=(); "請輸入字符2"); Stringstr2=(); if(str1)==-1) "字符串1不是字符串2的子串"); else "字符串1是字符串2的子串"); byteb[]=(); for(inti=0;i<();i++) }}第8章1.Java為什么要引入線程機(jī)制線程的概念是什么線程和進(jìn)程的區(qū)別是什么解釋什么是Java的多線程答:Java之所以引入線程機(jī)制是因為:線程間的通信非常簡單且有效,上下文切換非常快,它們是同一個進(jìn)程中的兩部分之進(jìn)行的切換,每個線程彼此獨立執(zhí)行,一個程序可以同時使用多個線程來完成不同的任務(wù)。所謂線程是指進(jìn)程中單一順序的執(zhí)行流。進(jìn)程是一個動態(tài)執(zhí)行的程序,當(dāng)你運(yùn)行一個程序的時候,就創(chuàng)建了一個用來容納組成代碼和數(shù)據(jù)空間的進(jìn)程。每一個進(jìn)程都有自己的一塊內(nèi)存空間和一組系統(tǒng)資源,它們之間都是獨立的。線程可以共享內(nèi)存單元和系統(tǒng)資源,但不能夠單獨執(zhí)行,必須存在于某個進(jìn)程當(dāng)中。它是比進(jìn)程更小的能獨立運(yùn)行的基本單位。Java中的線程由虛擬的CPU、CPU所執(zhí)行的代碼和CPU所處理的數(shù)據(jù)三部分組成。Java的多線程就是系統(tǒng)每次給Java程序一個CPU時間,Java虛擬處理機(jī)在多個線程之間輪流切換,保證每個線程都能機(jī)會使用CPU資源,不過每個時刻只能有一個線程在執(zhí)行。2.線程創(chuàng)建方式有哪兩種請舉例說明。答:兩種途徑來實現(xiàn)多線程的創(chuàng)建:一種是直接繼承Thread類并重寫其中的run()方法,另一種是使用Runnable接口。途徑一:classSimpleThreadextendsThread{privateStringthreadname;publicSimpleThread(Stringstr){threadname=str;}

publicvoidrun(){

for(inti=0;i<10;i++){

"被調(diào)用!");

try{

sleep(10);

}catch(InterruptedExceptione){}

}}}途徑二:classSimpleThreadimplementsRunnable{publicSimpleThread(Stringstr){super(str);}

publicvoidrun(){

for(inti=0;i<10;i++){

"被調(diào)用!");

try{

(10);

}catch(InterruptedExceptione){}

}}}3.什么是線程的生命期它包括哪幾種狀態(tài)它們的關(guān)系是什么答:線程的生命期是指從線程被創(chuàng)建開始到死亡的過程,通常包括5種狀態(tài):新建、就緒、運(yùn)行、阻塞、死亡。它們的關(guān)系如圖所示:4.請舉例說明如何實現(xiàn)線程的同步(用兩種方法)。方法一(方法同步):classStack{ privateintnumber; privateintlen=0; publicsynchronizedvoidput(intt){ while(len==1){ try{ (); }catch(InterruptedExceptione){} } number=t; len=1; (); } publicsynchronizedintget(){ while(len==0){ try{ (); }catch(InterruptedExceptione){} } len=0; (); returnnumber; }}方法二(對象同步):classStack{ privateintnumber; privateintlen=0; publicvoidput(intt){ synchronized(this){ while(len==1){ try{ (); }catch(InterruptedExceptione){} } number=t; len=1; (); } } publicintget(){ synchronized(this){ while(len==0){ try{ (); }catch(InterruptedExceptione){} } len=0; (); returnnumber; } }}classInputimplementsRunnable{ Stacksstack; publicInput(Stacks){ sstack=s; } publicvoidrun(){ for(inti=1;i<5;i++){ (i); "向Stack放入數(shù)字:"+i); try{ ((int)()*10)); }catch(InterruptedExceptione){} } }}classOutputimplementsRunnable{ Stacksstack; publicOutput(Stacks){ sstack=s; }publicvoidrun(){ inttemp; for(inti=1;i<5;i++){ temp=(); "向Stack取出數(shù)字:"+temp); try{ ((int)()*10)); }catch(InterruptedExceptione){} }}}publicclassHello{ publicstaticvoidmain(Stringargs[]){ Stacks=newStack(); Inputt=newInput(s); Outputo=newOutput(s); Threadt1=newThread(t); Threadt2=newThread(o); (); (); }}5.Java種有哪些情況會導(dǎo)致線程的不可運(yùn)行答:一是調(diào)用了wait()方法,使得線程等待;二是調(diào)用了sleep(inttime)方法,使得線程休眠;三是調(diào)用了suspend()方法,使得線程掛起;四是由于輸入輸出流而引起阻塞。6.wait()方法和sleep()方法的區(qū)別是什么答:sleep()方法使線程進(jìn)入睡眠狀態(tài),但它并不會釋放線程持有的資源,不能被其他資源喚醒,不過睡眠一段時間會自動醒過來,而wait()方法讓線程進(jìn)入等待狀態(tài)的同時也釋放了持有的資源,能被其他資源喚醒。7.線程組的作用是什么如何創(chuàng)建一個線程組答:線程組是把多個線程集成到一個對象里并可以同時管理這些線程。在線程創(chuàng)建時,可以將線程放在某個指定的線程組中,也可以將它放在一個默認(rèn)的線程組。若創(chuàng)建線程而不明確指定屬于哪個組,它們就會自動歸屬于系統(tǒng)默認(rèn)的線程組。以下三種Thread類的構(gòu)造方法實現(xiàn)線程創(chuàng)建的同時指定其屬于哪個線程組。publicThread(ThreadGroupgroup,Runnabletarget);

publicThread(ThreadGroupgroup,Stringname);publicThread(ThreadGroupgroup,Runnabletarget,Stringname);8.Java線程調(diào)度的原則是什么答:Java調(diào)度器調(diào)度遵循以下原則:優(yōu)先級高的線程比優(yōu)先級低的線程線程先調(diào)度,優(yōu)先級相等的線程按照排隊隊列的順序進(jìn)行調(diào)度,先到隊列的線程先被調(diào)度。當(dāng)一個優(yōu)先級低的線程運(yùn)行過程中,來了一個高優(yōu)先級線程,在時間片方式下,優(yōu)先級高的線程要等優(yōu)先級低的線程時間片運(yùn)行完畢才能被調(diào)度,而在搶占式調(diào)度方式下,優(yōu)先級高的線程可以立刻獲得CPU的控制權(quán)。9.如何理解死鎖答:如果兩個或多個線程都在互相等待對方持有的鎖(喚醒),那么這些線程都進(jìn)入阻塞狀態(tài),永遠(yuǎn)地等待下去,無法執(zhí)行,程序就出現(xiàn)了死鎖。10.下列程序輸出的結(jié)果是什么classDaemonextendsThread{ publicvoidrun(){ if()==false) "threadisnotdaemon"); else "threadisdaemon"); try{ for(inti=0;i<10;i++){ (200); } }catch(InterruptedExceptione){} "threaddone!"); }}publicclassTest{ publicstaticvoidmain(String[]args){ Threadt=newDaemon(); (true); (); try{ (900); }catch(InterruptedExceptione){}"maindone!"); }}答:輸出結(jié)果為:threadisdaemon01234maindone!11.編寫程序?qū)崿F(xiàn)如下功能:一個線程進(jìn)行如下運(yùn)算1*2+2*3+3*4+……+1999*2000,而另一個線程則每隔一段時間讀取前一個線程的運(yùn)算結(jié)果。解:classResult{ privatelongtotal=1*2; publicvoidwrite(longt){ total=total+t; } publiclongread(){ returntotal; }}classAdditionimplementsRunnable{ Resultrt; publicAddition(Results){ rt=s; } publicvoidrun(){ for(inti=2;i<2000;i++){ longtmp=0; tmp=i*(i+1); (tmp); try{ (10); }catch(InterruptedExceptione){} } }}classOutputimplementsRunnable{ Resultrt; publicOutput(Results){ rt=s; }publicvoidrun(){ longtemp; for(inti=1;i<200;i++){temp=(); try{ (100); }catch(InterruptedExceptione){} }}}publicclassHello{ publicstaticvoidmain(Stringargs[]){ Resultrt=newResult(); Additiont=newAddition(rt); Outputo=newOutput(rt); Threadt1=newThread(t); Threadt2=newThread(o); (); (); }}12.編寫程序?qū)崿F(xiàn)如下功能:第一個線程打印6個a,第二個線程打印8個b,第三個線程打印數(shù)字1到10,第二和第三個線程要在第一個線程打印完成之后才能開始打印。解:classThread1extendsThread{publicvoidrun(){for(inti=0;i<6;i++){'a');}}}classThread2extendsThread{publicvoidrun(){ try{ for(inti=0;i<8;i++){ 'b'); (100); } }catch(InterruptedExceptione){}}}classThread3extendsThread{publicvoidrun(){ try{ for(inti=1;i<=10;i++){ (100); } }catch(InterruptedExceptione){}}}publicclassTest{publicstaticvoidmain(String[]args){Thread1t1=newThread1();Thread2t2=newThread2();Thread3t3=newThread3();();try{();}catch(InterruptedExceptione){}();();}}13.編寫一個線程同步的程序:有一個字符緩沖區(qū),長度為length,我們創(chuàng)建兩個線程,其中一個線程向字符緩沖區(qū)寫入一個字符,(字符緩沖區(qū)一次只能裝入一個字符),另一個線程從字符緩沖區(qū)取出一個字符,并且輸出,要保證當(dāng)一個線程在寫字符的時候,另一個線程不能訪問字符緩沖區(qū),而且在字符緩沖區(qū)為空的時候取不出字符,而在字符緩沖區(qū)滿的時候?qū)懖贿M(jìn)字符。解:classStack{ privatechar[]stack=newchar[length+1]; privateintnum=0; publicsynchronizedvoidwrite(charc){while(num==length){ try{ (); }catch(InterruptedExceptione){} } num++; stack[num]=c; (); } publicsynchronizedcharread(){ while(num==0){ try{ (); }catch(InterruptedExceptione){} } num--; (); returnstack[num+1]; }}classInputimplementsRunnable{ Stacksstack; publicInput(Stacks){ sstack=s; } publicvoidrun(){ for(inti=1;i<10;i++){ chartmp; tmp=(char)(96+i); (tmp); "向字符緩沖區(qū)寫入字符:"+tmp); try{ ((int)()*10)); }catch(InterruptedExceptione){} } }}classOutputimplementsRunnable{ Stacksstack; publicOutput(Stacks){ sstack=s; }publicvoidrun(){ chartemp; for(inti=1;i<10;i++){ temp=(); "從字符緩沖區(qū)取出字符:"+temp); try{ ((int)()*10)); }catch(InterruptedExceptione){} }}}publicclassTest{ publicstaticvoidmain(Stringargs[]){ Stacks=newStack(); Inputt=newInput(s); Outputo=newOutput(s); Threadt1=newThread(t); Threadt2=newThread(o); (); (); }}14.什么是JavaApplet程序,它與前面介紹過的JavaApplication有何不同Applet一般稱之為小應(yīng)用程序,JavaApplet就是用Java語言編寫的這樣的一些小應(yīng)用程序,它們可以通過嵌入到Web頁面或者其他特定的容器中來運(yùn)行,也可以通過java開發(fā)工具的appletviewer來運(yùn)行,并能夠產(chǎn)生特殊的效果。與獨立執(zhí)行的Java應(yīng)用程序不同,Applet有自己的一套執(zhí)行流程,而不是通過main方法來開始執(zhí)行程序,并且在運(yùn)行過程中Applet常會與用戶進(jìn)行互動操作,顯示動態(tài)的頁面效果,并且還會進(jìn)行嚴(yán)格的安全檢查,以防止?jié)撛诘牟话踩蛩亍?5.簡述JavaApplet程序的開發(fā)步驟。Applet的開發(fā)步驟大致可以分為以下三個步驟:(1)用UltraEdit或Notepad等純文本軟件編輯JavaApplet源程序。(2)利用javac編譯器將Applet源程序轉(zhuǎn)換成class字節(jié)碼文件。(3)編寫HTML頁面,并通過<APPLET></APPLET>標(biāo)簽引用上述字節(jié)碼文件。16.簡述與JavaApplet生命周期相關(guān)的四個方法。Applet小程序的生命周期相對于Application而言較為復(fù)雜。在其生命周期中涉及到Applet類的四個方法:init()、start()、stop()和destroy(),Applet的生命周期中有相對應(yīng)的四個狀態(tài):初始態(tài)、運(yùn)行態(tài)、停止態(tài)和消亡態(tài)。當(dāng)程序執(zhí)行完init()方法以后,Applet小程序就進(jìn)入了初始態(tài);然后立刻執(zhí)行start()方法,Applet小程序進(jìn)入運(yùn)行態(tài);當(dāng)Applet小程序所在的瀏覽器圖標(biāo)化或者是轉(zhuǎn)入其它頁面時,該Applet小程序立刻執(zhí)行stop()方法,使Applet小程序進(jìn)入停止態(tài);在停止態(tài)中,如果瀏覽器又重新加載該Applet小程序所在的頁面,或者是瀏覽器從圖標(biāo)中還原,則Applet小程序又會調(diào)用start()方法,進(jìn)入運(yùn)行態(tài);不過,在停止態(tài)時,若瀏覽器被關(guān)閉,則Applet小程序會調(diào)用destroy()方法,使其進(jìn)入消亡態(tài)。17.編寫一個JavaApplet程序,使其在窗口中以紅色、綠色和藍(lán)色為順序循環(huán)顯示字符串:“WelcometoJavaApplet”。import.*;importclassJumpTextextendsAppletimplementsRunnable{ ThreadrunThread; inti; publicvoidstart(){ if(runThread==null){ runThread=newThread(this); (); i=0; } } publicvoidstop(){ if(runThread!=null){ (); runThread=null; } } publicvoidrun(){ while(true){ i=(i+1)%3; repaint(); try{ (1000); }catch(InterruptedExceptione){} } } publicvoidpaint(Graphicsg){ switch(i){ case0:;break; case1:;break; case2:;break; } ("WelcometoJavaApplet",8,50); }}18.列舉幾個Graphics類提供的方法,并說明其用法。(1)drawString(Stringstr,intx,inty)用于字符串輸出(2)publicvoiddrawLine(intx1,inty1,intx2,inty2) 其功能為以像素為單位繪制一條從(x1,y1)至(x2,y2)的直線。(3)drawRect()方法可以進(jìn)行矩形的繪制(4)fillRect()方法用于繪制以前景色填充的實心矩形(5)drawRoundRect()和fillRoundRect()方法來繪制圓角矩形(6)getImage()和drawImage()方法來實現(xiàn)在程序中顯示漂亮的背景或圖像(7)getAudioClip()、loop()和stop()等方法用來支持聲音文件的播放19.編寫Applet程序,繪制一幅五顏六色的圖。import.*;import.*;publicclassColorAppletextendsApplet{publicvoidpaint(Graphicsg){ ;(10,10,30,30); ;(50,50,80,80); ;(110,110,130,130); ;(110,10,30,30); ;(160,50,80,80);}}20.編寫一簡易自行車在公路上由左向右行駛的Applet程序。import.*;importclassMovingImgextendsApplet{ Imageimg0,img1; intx=10; publicvoidinit(){ img0=getImage(getCodeBase(),""); img1=getImage(getCodeBase(),""); } publicvoidpaint(Graphicsg){ (img0,0,10,this); (img1,x,30,this); (img0,0,60,this); try{ (50); x+=5; if(x==550){ x=10; (1500); } }catch(InterruptedExceptione){} repaint(); } }注:為公路邊線圖,為自行車圖片第9章1.圖形用戶界面的設(shè)計原則有哪些通常,圖形用戶界面的開發(fā)都要遵循一些設(shè)計原則,比如:(1)用戶至上的原則。設(shè)計界面時一定要充分考慮用戶的實際需要,使程序能真正吸引住用戶,讓用戶覺得簡單易用。(2)交互界面要友好。(3)配色方案要合理。建議用柔和的色調(diào),不用太刺眼的顏色。2.AWT組件集提供的組件大致可以分為哪幾類各起有什么作用AWT組件大致可以分為以下三類: (1)容器類組件 (2)布局類組件 (3)普通組件類容器類組件可以用來容納其他普通組件或者甚至是容器組件自身,起到組織用戶界面的作用;布局類組件本身是非可視組件,但它們卻能很好地在容器中布置其他普通可視組件;AWT提供了一系列的普通組件以構(gòu)建用戶圖形界面,它們主要包括:標(biāo)簽、文本框、文本域、按鈕、復(fù)選框、單選框、列表框、下拉框、滾動條和菜單等。3.AWT提供的布局方式有哪幾種請分別進(jìn)行簡述。(1)FlowLayout FlowLayout是最簡單的一種布局方式,被容納的可視組件從左向右,從上至下依次排列,若一組件在本行放置不下,就自動排到下一行的開始處,該方式為Panel類和Applet類容器的默認(rèn)布局方式。(2)BorderLayout BorderLayout布局方式的特點是:將容器劃分為“東”“西”“南”“北”“中”五個區(qū),分別為、BorderLayout.WEST、、和,每個區(qū)可以擺放一個組件,因此最多可以在BorderLayout的容器組件中放置五個子組件,前面已提到過,該布局方式是Frame或Dialog容器類組件的默認(rèn)布局方式。(3)GridLayout GridLayout布局將容器劃分為行和列的網(wǎng)格,每個網(wǎng)格單元可以放置一個組件,組件通過add()方法從上到下,從左至右順序加入網(wǎng)格各個單元中,因此,在使用這種布局時,用戶應(yīng)首先設(shè)計好排列位置,然后再依次調(diào)用add()方法進(jìn)行添加。(4)GridBagLayout GridBagLayout是所有AWT布局管理方式中最繁的,同時也是功能最強(qiáng)的,這主要是因為它提供了許多可設(shè)置參數(shù),使得容器的布局方式可以得到準(zhǔn)確的控制,盡管設(shè)置步驟相對要復(fù)雜得多,但是只要理解了它的基本布局思想,就可以很容易使用GridBagLayout來進(jìn)行界面設(shè)計了。(5)CardLayout CardLayout布局將組件(通常是Panel類的容器組件)象撲克牌(卡片)一樣

溫馨提示

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

最新文檔

評論

0/150

提交評論