




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
Java語言程序設(shè)計習(xí)題解答(張思民)
第1章Java概述
【I】為H么說Java的運行與“算機硬件平臺無關(guān)?
[解答]:Java編譯器能夠產(chǎn)生一種與計算機體系結(jié)構(gòu)無關(guān)的字節(jié)指令(ByteCode),只要安裝
了Java虛擬機,Java就可以在相應(yīng)的處理機上執(zhí)行。利用Java虛擬機就可以把Java字節(jié)碼
程序跟具體的操作系統(tǒng)以及硬件平臺分隔開來。
[2]Java有什么特點?
[解答]:Java的特點有:
(1)簡單性;
(2)面向?qū)ο螅?/p>
(3)跨平臺性;
(4)健壯性;
(5)安全性;
(6)可移植性;
(7)多線程性;
(8)動態(tài)性。
[3]試述Java開發(fā)環(huán)境的建立過程。
[解答]:Java開發(fā)環(huán)境的建立過程如下:
I.JDK的下載與安裝:從hHD:〃java.sun.coin卜載最新版的JDK,單擊下載后的文件卻出現(xiàn)
安裝界面;在此界面中打擊“next”按鈕即可;
2.JDK的配置:安裝好JDK后,設(shè)安裝路徑為c:\jdk1.5;還需要在環(huán)境變豉中進行對應(yīng)的配
置。下面以Windows操作系統(tǒng)為例來進行配置。
1)設(shè)置JAVA_HOME環(huán)境變量:在桌面上用鼠標(biāo)右鍵單擊“我的電腦”,依次選擇“屬性”、
“高級”、“環(huán)境變量”選項,新建一個系統(tǒng)變量,名稱為JAVA_HOME,值為c:\jdk1.5;
2)設(shè)置CLASSPATH環(huán)境變量,設(shè)置方法和JAVAJ4OME一樣,其值為
c:\jdkl.5\lib\tools.jar;.:
3)更新PATH環(huán)境變量的值,編輯PATH系統(tǒng)變量,在最后添加c:\jdkl.5\bin;.。
[4]什么是JavaAPI?它提供的核心包的主要功能是什么?
[解答]:JavaAPI就是Java所提供的標(biāo)準(zhǔn)類庫,它把程序設(shè)計所需要的常用的方法和接口分
類封裝成包。在JavaAPI中主要包括核心java包、javax擴展包和org擴展包等。核心java
包中封裝了程序設(shè)計所需要的主要應(yīng)用類。
[5]如何編寫和運行Java應(yīng)用程序?
[解答]:Java應(yīng)用程序的編寫和運行過程:
1.建立Java源文件:首先創(chuàng)建Java的源代碼,即建立一個文本文檔,包括有符合Java規(guī)范
的語句。
2.編譯源文件:“編譯”就是將一個源代碼文件翻譯成計算機可以理解和處理的格式的過程。
Java源程序編譯后會生成一個字節(jié)碼文件,即帶擴展名class的文件。Java字節(jié)碼文件中包含
的使Java解釋程序?qū)⒁獔?zhí)行的指令碼。
3.執(zhí)行字節(jié)碼文件:通過Java虛擬機運行字節(jié)碼文件。
[6]為什么要為程序添加注釋,在Java程序中如何為程序添加注釋?
[解答]:注釋是程序中的說明性文字,是程序的非執(zhí)行部分。它的作用是為程序添加說明,增
加程序的可讀性。
Java使用以下二種方式對程序進行注釋:
1."http://”符號,它表示從“〃”符號開始到此行的末尾位置都作為注釋。
2.,,/*...刃”符號,它表示從“/*”開始到“*/”結(jié)束的部分都作為注釋部分,可以使多行
注釋。
【7】Java工具集中的javac、java各有什么作用?
[解答]:javac的作用:它是Java編譯器,用于將Java源程序編譯成字節(jié)碼文件;
java的作用:它是Java解釋器,用于解釋執(zhí)行Java字節(jié)碼文件;
第2章Java基礎(chǔ)
[1]什么是數(shù)據(jù)類型?為什么要將數(shù)據(jù)劃分為不同的數(shù)據(jù)類型?
[解答]:Java是一門強類型語言。數(shù)據(jù)類型是用來區(qū)分不同的數(shù)據(jù);由于數(shù)據(jù)在存儲時所需要
的容量各不相同,不同的數(shù)據(jù)就必須要分配不同大小的內(nèi)存空間來存儲,所有就要將數(shù)據(jù)劃
分成不同的數(shù)據(jù)類型。
[2]Java中有哪些數(shù)據(jù)類型?
[解答]:Java中有8種基本數(shù)據(jù)類型:字節(jié)型(byte),短整型(short),整型(int),長整型(long),
字符型(char),單精度型(float),雙精度型(double),布爾型(boolean)。
[3]聲明變量的作用是什么?
[解答]:變量時一個數(shù)據(jù)存儲空間的表示,將數(shù)據(jù)指定給變量,就是將數(shù)據(jù)存儲至對應(yīng)的內(nèi)存
空間,調(diào)用變量,就是將對應(yīng)的內(nèi)存空間的數(shù)據(jù)取出來使用。聲明變量就是申請一個內(nèi)存空
間。
[4]若x=4,y=2,計算z值:
z1
vfz=x&y
2
z\
\(7z=x|y
(z3\.
x/!z二x|y
4!\
/z=x?y
5)z=~x
(6)7=x?y
(7)z=x?>y
[解答]:
publicclassTest_4{
publicstaticvoidmain(String[Jargs){
intx=4,y=2,z;〃初始化x,y,z
z=x&y;〃求z=x&y;即x與y的值
System.ou(.println("4_I:"+z);
z=x|y;〃求z=xy;即x或y的值
System.ou(.println("4_2:"+z);
z=xAy;〃求z=xAy;即x異或y的值
Systcm.out.println("4_3:"+z);
z=x?y;〃求z=x?y;即x右移y位的值
System.out.println("4_4:"+z);
Z=~X;〃求Z=~X;即X位反的值
System.out.println("4_5:"+z);
z=x?y;〃求z=x?y;即x左移y位的值
System.out.println("4_6:M+z);
z=x?>y;〃求z=x?>y;BPx無符號右移y位的值
System.out.println("4_7:"+z);
【5】假設(shè)x=10,y=20,z=30?求下列布爾表達(dá)式的值:
(1)x<10||x<10
(2)x>y&&y>x
(3)(x<y+z)&&(x+10<=20)
(4)z-y==x&&(y-z)==x
(5)x<10&&y>x
(6)x>y||y>x
(7)!(x<y+z)||!(x+IO<=2O)
(8)(!(x==y))&&(x!=y)&&(x<y||y<x)
[解答]:
publicclassTest_5{
publicstaticvoidmain(String[]args){
intx=10,y=20,z=30;
booleanflag;
〃求xvlO||xvlO右爾值
flag=x<10||x<10;
Systcm.out.println("5_l:"+flag);
〃求x>y&&y<x布爾值
flag=x>y&&y<x;
System.ou(.println("5_2:"+nag);
//求(x〈y+z)&&(x+10<=20)布爾值
flag=(x<y+z)&&(x+10<=20);
System.out.println("5_3:"+flag);
〃求z-y==x&&(y-z)==x布爾值
flag=z-y==x&&(y-z)==x;
Systcm.out.println("5_4:H+flag);
〃求x〈10&&x>10布爾值
flag=x<10&&x>10;
Sysiem.oul.println("5_5:"+flag);
〃求x>y||y>x布爾值
flag=x>y||y>x;
System.out.println("5_6:"+flag);
〃求!(x<y+z)||!(x+10<=20)布爾值
flag=!(x<y+z)||!(x+10<=20);
System.out.println("5_7:M+flag);
〃求(!(x==y))&&(x!=y)&&(x〈y||y〈x)布爾值
flag=(!(x==y))&&(x!=y)&&(x<y||y<x);
System.out.println("5_8:"+flag);
1
[6]什么是表達(dá)式?什么是語句?
[解答]:表達(dá)式是由運算符,操作數(shù)和方法調(diào)用按照語言的語法構(gòu)造而成的符號序列。表達(dá)式
可用于計算一個格式,位變量賦值以及幫助控制程序執(zhí)行流程。
語句:語句組成了一個執(zhí)行程序的基本單元,類似于自然語言的句子。包括表達(dá)式語句、復(fù)
合語句、控制語句等。
[7]Java有哪些數(shù)據(jù)類型?請描述其分類情況。
[解答]:Java定義了8個基本數(shù)據(jù)類型:字節(jié)型,短整型,整型,長整型,字符型,浮點型,
雙精度型,布爾型。它們分為4組:
1)整數(shù)型(byte,short,int,long)
2)浮點數(shù)型(float,double)
3)字符型(char)
4)布爾型(boolean)
[9]試比較break和conlinue語句的區(qū)別?
[解答]:Break:強行退出循環(huán),忽略循環(huán)體中的任何其池語句和循環(huán)的條件的條件測試。
Continue:語句用來終止本次循環(huán)。其功能是終止當(dāng)前正在進行的本輪循環(huán),即跳過后面剩余
的語句,轉(zhuǎn)而執(zhí)行循環(huán)的第一條語句,計算和判斷循環(huán)條件,決定是否進入下一輪循環(huán)。
【10】有一函數(shù):
rx(x<i)
y=<3x-2(l<x<10)
4x(x210)
編寫一程序,給定x值,輸出y值。
[解答]:
importjava.io.*;
publicclassTcst_9{
publicstaticvoidmain(String[]args)throwsNumberFonnatExceplionJOException{
InputStreamReaderisr=newInputStreamReader(System.in);
BufferedReaderbr=newBufferedReader(isr);
System.out.printin("請輸入數(shù)字x的值:");
doublex=Double.parseDouble(br.readLine());
doubley=0;
if(x<1){
y=x;
}else{
if(x>=1&&x<10){
y=3*x-2;
}else{
y=4*x;
}
)
System.out.println("y="+y);
}
【11】說明while和dowhile語句的差異。
[解答]:Do-while與while語句的主要區(qū)別在于,先執(zhí)行循環(huán)體中的語句再計算條件表達(dá)式,
所以do-while語句的循環(huán)體至少執(zhí)行一次。
[12]寫出下列語句執(zhí)行后的結(jié)果:
for(k=l;k<=5:k++)
{
if(k>4)break;
Systeni.out.println("k="+k);
)
[解答]:
publicclassTest_l1{
publicstaticvoidmain(String[]args){
intk;
for(k=1;k<=5:k++){
if(k>4)
break;
Systcm.out.println("k="+k);
10
[13]編寫程序,求工公的值。
Jt=l
[解答]:
publicclassTesl_12{
publicstaticvoidmain(String[]args){
inik,sum=0;
for(k=l;k<=10;k++){
sum=sum+k*k;
)
SystcnLout.println(,,sum=,,+sum);
)
1
【14】編寫一程序,輸入3個數(shù),能按大小順序輸出。
[解答]:
importjava.io.BufferedReader;
importjava.io.IOExccption:
importjava.io.InputStreamReader;
publicclassTest_13{
publicstaticvoidmain(Slring[]args)throwsNumberFormatExceplionJOException{
InputStreamReaderisr=newInputStreamReader(System.in);
BufferedReaderbr=newBufteredReader(isr);
inta[]=newinl[3];
intk,temp;
Syslem.out.prinllM"請輸入3個數(shù)字(每輸入一個數(shù)字后請換行廠);
for(inti=0;i<3;i++){
a[i]=In(eger.parseInt(br.readLine());
)
for(inti=0;i<a.length;i++){
k=i;
for(intj=k+1;j<a.lcngth;j++){
if(a[j]<a[k]){
k=j;
1
}
if(k!=i){
temp=a[i];
a[i]=a(kj;
a[k]=temp;
)
I
System.out.println("從小到大排序:”);
for(inti=0;i<a.length;i++){
System.out.print(a[i]+"");
)
)
)
[15]編寫一各Java程序,查找1?100之間的素數(shù)并將運行結(jié)果輸出。
[解答]:
publicclassTest_14{
publicstaticvoidmain(String[]args){
intm,k,i,n=0;
booleanflag;
for(m=I;m<=100;m=m+2){
flag=true;
k=(inl)Math.sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0){
flag=false;
break;
)
if(flag){
System.out.prinl(m+"
n=n+1;
)
if(n%10==0)
Sy>tem.out.println();
【16】運行下面程序,并分析其執(zhí)行過程:
Publicclassmultiplication(
publicstaticvoidmain(Stringargs[j){
intij;
for(i=l;i<10;i++){
for(i=l;i<10;i++){
System.out.print(i+”*”+j+”=”+i"j+””);
System.out.println();
}
)
【解答]:
publicclassTest_15{
publicstaticvoidmain(String[]args){
inti,j;
for(i=l;i<10;i++){
for(j=l;j<=i;j++){
Systcm.out.print(i+"*u+j+”="+i*j+“”);
)
System.out.printlnO;
)
}
I
/*
結(jié)果:
1*1=1
2*1=22*2=4
3*1=33*2=63*3=9
4*1=44*2=84*3=124*4=16
5*1=55*2=105*3=155*4=205*5=25
6*1=66*2=126*3=186*4=246*5=306*6=36
7*1=77*2=147*3=217*4=287*5=357*6=427*7=49
8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64
9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81
乘法表
*/
[17]編寫打印下列圖形的程序:
(1)(2)(3)
#*******$
##木****$$$
###***》①》。C1
####*$$$
$
[解答]:
publicclassTest_17_l{
publicstaticvoidmain(String[largs){
inti,j;
for(i=l;i<=4;i++){
for。=l;j<=i;j++){
Syslem.out.print("#"+11");
Systcin.out.println();
publicclassTest_17_2{
publicstaticvoidmain(String[largs){
inti,j,k;
for(i=0;i<4;i++){
for(k=0;k<i;k++){
System.out.print("");
}
for(j=0;j<=6-2*i;j++)
System.out.print("*");
Systein.out.println();
)
)
}
publicclassTest_17_3{
publicstaticvoidmain(String[]args){
inti=0,blank,j,star,input=5;//input是輸入的行數(shù)
Strings="";
fbr(i=0;i<input;i++)
{
blank=Math.absii-input/2);
for(j=1;j<=blank;j++)
s+="";
star=input-2*blank;
fbr(j=1;j<=star;j++)
s+="$";
s+="\nH;
)
System.ou(.print(s);
第3章面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ)
[1]什么是Java程序使用的類?什么是類庫?
[解答]:Java程序的基本單位是類。對象是對事物的抽象,而類是對對象的抽象和歸納,找出
事物的共性,把具有共同性質(zhì)的事物歸結(jié)為一類,得出一個抽象的概念——類。類是具有相同屬
性和方法的一組對象的集合,類是在對象之上的抽象,對象則是類的具體化,一旦建立類之
后,就可用它來建立許多你需要的對象。
Java的類庫是系統(tǒng)提供的已實現(xiàn)的標(biāo)準(zhǔn)類的集合,是Java編程的AP!(ApplicationPiogram
Interface),它可以幫助開發(fā)者方便、快捷地開發(fā)Java程序。
[2]如何定義方法?在面向?qū)ο蟪绦蛟O(shè)計中方法有什么作用?
[解答]:方法的定義由兩部分組成:方法聲明和方法體。方法聲明的基本格式如下:
返回類型方法名(形式參數(shù))
(
…〃方法體內(nèi)容
)
方法聲明包括方法名、返回類型和形式參數(shù),方法的小括號是方法的標(biāo)志;方法體為實
現(xiàn)方法行為的Java語句。
在面向?qū)ο蟪绦蛟O(shè)計中,方法所起的作用是完成對類和對象屬性操作。
【3】簡述構(gòu)造方法的功能和特點。下面的程序片段是某學(xué)生為student類編寫的構(gòu)造方法,
請指出其中的錯誤。
voidStudcnt(intno.Stringname)
studentNo=no;
studentName=name;
returnno;
[解答]:構(gòu)造方法是一個特殊的方法,主要用于初始化新創(chuàng)建的對象。構(gòu)造方法的方法名要求
與類名相同,用戶不能直接調(diào)用,只能通過new運算符調(diào)用,而且構(gòu)造方法是不返回任何數(shù)
據(jù)類型,甚至也不返回void數(shù)據(jù)類型,即不能在構(gòu)造方法前加void。
以上的代碼段出錯于:①構(gòu)造方法5ludenl()前不能加void②不能用return語句
[4]定義一個表示學(xué)生的student類,包括的域有學(xué)號、姓名、性別、年齡,包括的方法有
獲得學(xué)號、姓名、性別、年齡及修改年齡。編寫Java程序創(chuàng)建student類的對象及測試其方法
的功能。
[解答]:程序代碼段如下:
classstudent{
privateStringid;
privateStringname;
privateStringsex;
privateintage;
publicStringgetld()
{returnid;}
publicStringgctName()
{returnname;}
publicStringgetSex()
{returnsex;}
publicintgetAge()
{returnage;}
voidsetAge(intage)
{this.agc=age;}
)
publicclassTestStudent
{publicstaticvoidmain(Stringargs[])
{studentstu=newstudent("0401398”,"楊小明"男",20);
System.out.println("studentinfo:"+"\n學(xué)號:"+stu.getld()4-"\n姓名"+
stu.getName()4-"\n性別:"+stu.getSex()+"\n年齡:"+stu.getAge());
stu.setAge(19);
System.out.println("修改后的年齡為:"+stu.getAge());
)
}
【5】擴充、修改程序。為第4題的sludenl類定義構(gòu)造函數(shù)初始化所有的域,增加一個方法
publicStringprintlnfo()把student類對象的所有域信息組合形成一個字符串,并在主類中創(chuàng)建
學(xué)生對象及測試各方法的功能。
[解答]:程序代碼段如下:
classstudent{
privateStringid;
privateStringname;
privateStringsex;
privateintage;
student(Stringid,Stringname,Stringsex,intage)
{this.id=id;
=name;
this.sex=sex;
this.age=age;
)
publicStringgetld()
{returnid;}
publicStringgetNamc()
{returnname;}
publicStringgetSex()
{returnsex;}
publicintgetAge()
{returnage;}
voidse(Age(intage)
{this.age=age;}
publicStringprin(Info()
{Strings="studentinfo:"+"\n學(xué)號:"+id+"\n姓名"+name+"\n性別:"+sex+"\n年齡"
+age;
System.out.println(s);
returns;
}
}
publicclassTestStudent
{publicstaticvoidniain(Stringargs[])
{studentstu=newstudent("0401398”,"楊小明","男",20);
stu.printlnfo();
stu.setAge(19);
stu.printlnfo();
)
}
(61什么是修飾符?修飾符的種類有哪些?它們各有什么作用?
[解答]:修飾符是用于限定類對象使用的權(quán)限,從而實現(xiàn)類中成員的信息隱藏。訪問修飾符適
用于類成員,而不是方法內(nèi)部的局部變量。Java常見II勺訪問修飾符有這4種:private、
default、protected和publico
(1)public可以被所有的類訪問
(2)pravite只能被類本身訪問,其他類無法訪問
(3)protected可以被類本身、它的子類(包括同一個包中以及不同包中的子類)
(4)default屬于默認(rèn)的訪問狀態(tài),可以被類本身和同一個包中的類訪問
[7]什么是抽象類?為什么要引入抽象類的概念?
[解答]:抽象類是用來描述人們在對問題領(lǐng)域進行分析、設(shè)計中得出的抽象概念,是對一系列
看上去不同,但是本質(zhì)上相同的具體概念的抽象。抽象類不具備實際功能,是專門設(shè)計用來
讓子類繼承的類,把這些具有共同特征的方法抽象出來,由子類負(fù)責(zé)這些抽象方法的實現(xiàn)細(xì)
節(jié),而父類僅提供此方法的名稱和聲明、沒有方法的主體,該類。
[8]什么是抽象方法?如何定義、使用抽象方法?
[解答]:用abstract關(guān)鍵字修飾的方法稱為抽象方法。抽象方法定義時,需在方法名前加上關(guān)
鍵字abstract,抽象方法只有方法聲明,沒有代碼實現(xiàn)的空方法。因此,必須通過其子類來重
寫父類中定義的每一個抽象方法。
【9】包的作用是什么?如何在程序中引入一定義的類?使用己定義的用戶類、系統(tǒng)類有哪些
主要方式?
[解答]:包的作用是將類和接口封裝在一起,方便了類和接口的管理和調(diào)用,要引入包中已定
義的類,必須用關(guān)鍵字import來導(dǎo)入這些類所在的包。import語句的一般形式如下:
import包名.類名
其中類名可以用通配符代替。
使用己定義的用戶類、系統(tǒng)類主要有三種方式:直接調(diào)用、繼承和創(chuàng)建已定義的用戶類、
系統(tǒng)類的對象。但無論采用哪種方式,使用已定義的用戶類、系統(tǒng)類的前提條件是用戶類、
系統(tǒng)類應(yīng)該是用戶程序可見的類,為此用戶程序需要用import語句引人它所用到的用戶類、
系統(tǒng)類或用戶類、系統(tǒng)類所在的包。
[10]什么是繼承?如何定義繼承關(guān)系?
[解答]:同類事物具有共同性,在同類事物中,每個事物又具有其特殊性。運用抽象的原則舍
棄對象的特殊性,抽取其共同性,則得到一個適應(yīng)于一批對象的類,這便是基類(父類),而
把具有特殊性的類稱為派生類(子類),派生類的對象擁有其基類的全部或部分屬性與方法,
稱作派生類對基類的繼承,
派生類繼承基類,必須使用關(guān)鍵字extends來聲明.比如派生類B繼承基類A,派生類
B定義的一般形式如下:
classBextendsA
[11]什么是多態(tài),如何實現(xiàn)多態(tài)?
[解答]:多態(tài)是指一個程序中同名的不同方法共存的情況。這些方法同名的原因是它們的最終
功能和目的都相同,但是由于在完成同一功能時,可能遇到不同的具體情況,所以需要定義
含不同的具體內(nèi)容的方法,來代表多種具體實現(xiàn)形式。多態(tài)通常是一個消息在不同的類中用
不同的方法實現(xiàn)的。
多態(tài)的實現(xiàn)是由消息的接收者確定一個消息應(yīng)如何解釋,而不是由消息的發(fā)送者確定,
消息的發(fā)送者只需要指導(dǎo)另外的實例可以執(zhí)行一種特定操作即可。Java中提供兩種多態(tài)機制:
方法重載與方法重寫。
[12]解釋this和super的意義和作用。
[解答]:this指的是引用當(dāng)前對象或類名稱,當(dāng)一個類的實例變量名與一個方法中參數(shù)名相
同時,則參數(shù)就隱藏了實例變量名,此時可通過使用關(guān)鍵字this來訪問它;super用來引用當(dāng)
前對象的父類,通過super來訪問父類被子類隱藏的成員變量、成員方法以及父類的構(gòu)造方法。
由于子類不繼承父類的構(gòu)造方法,可使用super來調(diào)用父類的構(gòu)造方法,并且super必須是子
類構(gòu)造方法中的第一條語句。
[13]什么是接口?為什么要定義接口?接口和類有什么異同?
[解答]:接口是用來調(diào)節(jié)各類之間的相互關(guān)系的一種結(jié)構(gòu),接口是抽象類的一種,只包含常量
和方法的定義,而沒有變量和具體方法的實現(xiàn),且其方法都是抽象方法。
接口定義的格式如下:
[public]interface接口名[extends父接口名列表]{
...//接口體
}
extends子句有類聲明的exlends子句基本相同,不同的是一個接口可有多個父接口,用逗
號隔開,而一個類只能有一個父類。Java中的類只能實現(xiàn)單重繼承,這雖然可以簡化編程,
但畢竟沒有完全實現(xiàn)面向?qū)ο蟮墓δ?。定義接口的主要作用,就是幫助Java實現(xiàn)類間多重繼
承的結(jié)構(gòu)。而且接口還有以下好處:
?接口可以被多個類所實現(xiàn),這些類可以不相關(guān),從而具有相同的行為。
?通過接口可以了解對象的行為,而無需了解對象所對應(yīng)的類的結(jié)構(gòu)。
【14】將一個抽象類改寫成接口,并實現(xiàn)這個接口。
[解答]:程序代碼段如下:
〃抽象類的應(yīng)用示例
abstractclass動物
{publicabstractvoidcryO;}
class狗extends動物
{publicvoidcry()
{System.oui.prinlln("汪汪.....");}
}
classTest
{publicstaticvoidmain(Stringargs[])
{動物dongwu;
dongwu=new狗0;
dongwu.cryO;
)
|
〃將抽象類改寫成接口,并實現(xiàn)這個接口
interface動物
{publicvoidcry();}
class狗implements動物
{publicvoidcry()
{Systcm.out.println("江江..…");)
}
classTest
{publicstaticvoidmain(Stringargs[])
{動物dongwu;
dongwu=new狗();
dongwu.cry();
}
)
[15]編寫一個程序?qū)崿F(xiàn)包的功能。
[解答]:包的功能實現(xiàn)包括兩步驟:打包、引用包,其具體實現(xiàn)如下:
⑴〃設(shè)當(dāng)前運行目錄的子FI錄test'bag下有MyBag.class類,其源程序如下:
packagetest.bag;
publicclassMyBag
(
publicvoidprint()
{System.out.println("包的功能測試)}
)
(2)//在當(dāng)前目錄的TestBag.java中,要使用子目錄test'bag下有MyBag.class類中的print()
〃方法,其源程序如下:
importtesl.bag.MyBag;
publicclassTestBag
{publicstaticvoidmain(Slringargs[])
{MyBagmb二newMyBagO;
mb.printO;
[16]填空:
(1)如果類A繼承了類B,則類A被稱為類,類B被稱為類。
[解答]:子父
(2)繼承使成為可能,它節(jié)省了開發(fā)時間。
[解答1:代碼更用
(3)如果一個類包含一個或多個abstract方法,它就是一個類。
[解答]:抽象
(4)一個子類一般比其超類封裝的功能要。
[解答]:強
(5)標(biāo)記成的類的成員不能由該類的方法訪問。
[解答]:static
(6)Java用關(guān)鍵字指明繼承關(guān)系。
[解答]:extends
⑺this代表了的引用。
[解答]:當(dāng)前對象
(8)super表示的是當(dāng)前對象的對象。
[解答]:父類
(9)抽象類的修飾符是o
[解答]:abstract
(10)接口中定義的數(shù)據(jù)成員是。
[解答]:常量
(II)接口中沒有什么方法,所有成員方法都是方法。
[解答]:實例空
[17]
第4章數(shù)組與字符串
[1]考慮一個2X3的數(shù)組a。
(1)為a寫一個設(shè)聲明。試問,這樣的聲明使a有多少行,多少列,多少元素?
(2)寫出a的第1行的所有元素的名字。
(3)寫一條語句,置行1列2的元素為零。
(4)寫一個嵌套for結(jié)構(gòu),將a的每個元素初始化為零。
(5)定一條語句,求第3列元素的和。
[解答]:
(1)數(shù)組a有2行,3歹I」,元素個數(shù)為6
⑵第一行元素的名字為a[0][0],a[0][l],a[0][2]
⑶置行1列2的元素為0,語句是a[0][l]=0;
(4)
for(inti=0;i<2;i++){
for(inj=0;j<3y++){
a[i]U]=0;
}
I
(5)
intsum=0;
sum=ar0][2]+a[ll[2];
[2]求3X3矩形對角元素之和。
[解答]:
publicclassTest_2{
publicstaticvoidmain(String[jargs){
inti,j,sum=0;
intal][]=new
for(i=0;i<3;i++){
for(j=0;j<3;j++){
a[i][j]=i+j;
}
)
〃輸出二維數(shù)組
for(i=0;i<3;i++){
for(j=0;j<3;j++){
System.out.print(a[i][j]+**");
}
System.out.printlnO;
)
〃顯示對角線之和
for(i=0;i<3;i++){
sum=sum+a[i][i];
System.oul.prinUn("對角線之和:"+sum);
[3]編寫一程序,查找某一字符串是否包含有“abc”。
[解答]:
publicclassTest_3{
publicstaticvoidmain(String[]args){
Strings="yangenabc";
inta=s.indexOf("abc");
//a位找到abc的下標(biāo),找不到則返回-I
if(a!=-l){
Systcm.out.print("包含字符串a(chǎn)bc");
}else{
System.out.print("不包含字符串a(chǎn)bc");
)
)
)
【4】設(shè)一字符串中包含有大寫字母的字符,也有下寫字母的字符,編寫一程序,將其中的大
小寫字母的字符分別輸出。
[解答]:
publicclassTest_4!
publicstaticvoidmain(String[]args){
Strings="sdfKJjKjjsjdfKKJkjkjSDFsdf;
Stringsi="",s2=',,,,s3;
for(inti=O;i<s.length();i++){
s3="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if(s3.indexOf(s.charAt(i))!=-l){
sl=sl+s.charA((i);
}else{
s2=s2+s.charA((i);
)
}
System.out.println("大寫字母:");
Systcm.out.println(s1);
System.out.println("小寫字母:");
System.out.println(s2);
)
)
【5】輸出一字符串,統(tǒng)計其中有多少個單詞。(單詞之間用空格分隔)。
[解答]:
importjava.util.*;
publicclassTest_22{
publicstaticvoidmain(String[]args){
inti=0;
Strings="Helloworldilovejava";
StringTokcnizcrst=newStringTokcnizcr(s,n");
while(s(.hasMoreTokensO){
i++;
System.out.println(st.nextToken());
)
System.out.print(■單詞個數(shù):"+i);
)
[6]String與StringBuffer類的主要區(qū)別是什么?
[解答]:String對象一旦實例化之后,就不能改變其值。而StringBuffer對象可以實現(xiàn)對字符
串中某個字符的插入、修改、刪除及替換操作。
第5章圖形用戶界面設(shè)計
[1]什么是圖形用戶界面?試列舉出圖形用戶界面中你使用過的組件。
[解答]:圖形用戶界面或圖形用戶接口(GraphicalUserInterface,GUI)是指采用圖形方式顯示
的計算機操作環(huán)境用戶接口。與早期計算機使用的命令行界面相比,圖形界面對于用戶來說
更為簡便易用。(比如你用windowsXP和使用DOS操作系統(tǒng)的差別)。GUI是事件驅(qū)動的,
也就是說,一旦用戶與GUI交互,GUI組件就會生成”事件“(動作)。常見交互包括移徹鼠標(biāo)、
單擊鼠標(biāo)按鈕、在文字段輸入、從菜單選擇一個選項以及關(guān)閉一個窗口等等。
在windwosXP的GU[中,使用過窗口,菜單條,按鈕等
(2]創(chuàng)建一個窗體,窗體中有一個按鈕,當(dāng)單擊按鈕后,就會彈出一個新窗體。
[解答]:Test5_2.java
importjava.awt.*;
importjava.awt.event.*;
publicclassTcst5_2extendsFrameimplementsActionLislcncrf
Buttonbtn;
publicTes(5_2(){
super("彈出窗口練習(xí))
sctSize(3OO,2OO);
setVisible(true);
sctLayout(ncwBordcrLayout());
btn=newBulton("點擊我會彈出窗口");
PanelpI=newPanel。;
pl.add(ncwLabel(""));
pl.add(btn);
pl.add(ncwLabel(""));
add("South",pl);
validate();
addWindowListener(newWindovvAdapter()
{publicvoidwindowClosing(WindowEvente)
{Systcm.exit(O);}
I);
btn.addActionListener(this);
)
publicvoidactionPerfbrnied(ActionEvente){
newTest5_2();
publicstaticvoidmain(String[]args){
newTest5_2();
)
)
[3]什么是容器的布局?試列舉并簡述Java中常用的幾種布局策略。
[解答]:
容器的布局就是控制組件在容器中擺放的位置。
AWT容器分為兩類:外部容器和內(nèi)部容器。其中,外部容器一般會獨立存在,例如Frame
類;而內(nèi)部容器則會嵌套在外部容器內(nèi)部使用,例如Panel類。容器的布局是指對添加的各個
組件進行有序的、統(tǒng)一的對位置進行編排,使其更加美觀。
1.順序布局
順序布局(FlowLayout)是最基本的一種布局,面板的默認(rèn)布局就是順序布局。順序布局指
的是把圖形元件一個接一個地放在面板上。下面是一個順序布局的例子。
packagesample;
importjava.awt.*;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
publicclassMyFlowLayout{
privateFramef;
privateButtonbuttonI,bulton2,button3;
publicstaticvoidmain(StringargslJ){
MyFlowLayoutmflow=newMyFlowLayout();
inflow.go();
publicvoidgo(){
f=newFrame("FlowLayout演示");
f.addWindowListener(ne\vWindowAdapter(){
publicvoidwindo\vClosing(WindowEventevt){
f.sctVisiblc(false);
f.dispose();
System.exit(O);
I);
//f.setLayout(newFlowLayout。);
f.setLayout(newFlowLayou((FlowLayout.LEADING,20,20));
button1二newButton("確定)
button2=newButton("打開”);
button3=newBulton("關(guān)閉");
f.add(buitonI);
f.add(button2);
f.add(button3);
f.setSize(200,200);
f.pack();
f.setVisible(true);
程序運行結(jié)果如下。
&FlowLayout**-101x1
11定|打開|關(guān)回
圖順序布局(FlowLayout)
2.邊界布局
邊界布局(BorderLayout)包括5個區(qū):北區(qū)、南區(qū)、東區(qū)、西區(qū)和中區(qū)。這5個區(qū)在面板
上的分布規(guī)律是“上北下南,左西右東下面是一個邊界布局的例子。
packagesample;
importjava.awt.*;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
publicclassMyBorderLayout{
Framef;
Buttoneast,south,west,north,center;
publicstaticvoidmain(Stringargsf]){
MyBordcrLayoutmb=newMyBordcrLayout();
mb.go();
publicvoidgo(){
f=newFrame("BorderLayout演示");
f.addWindowListener(ne\vWindowAdapter(){
publicvoidwindowClosing(WindowEvcntevt){
f.setVisible(false);
f.dispose();
System.exit(O);
}
});
f.sctBounds(0,0,300,300);
f.sctLayout(ncwBordcrLayoutO);
north=newButlon("北)
south=newButtonC南');
east=newButton1'東”);
west=newButton。'西");
center=newBuHon("中");
f.add(BordcrLayout.NORTH,north);
f.add(BorderLayout.SOUTH,south);
f.add(BorderLayout.EAST,east);
f.add(BorderLayout.WEST,west);
f.add(BordeiLayout.CENTER,center);
f.setVisible(true);
}
)
程序運行結(jié)果見圖10-4o
圖10-4邊界布局(BorderLayout)
3.網(wǎng)格布局
網(wǎng)格布局(GridLayout)把面板分成一個個大小相等的網(wǎng)格,你可以給出網(wǎng)格的行數(shù)和列數(shù)。
下面是一個網(wǎng)格布局的例子。
packagesample;
importjava.awt.*;
importjava.awt.event.*:
publicclassMyGridLayout{
privateFramef;
privateButton1]btn;
publicstaticvoidinain(Stringargs[]){
MyGridLayoutgrid=newMyGridLayout。;
grid.goO;
)
publicvoidgo(){
f=newFrame("GridLayout演示)
f.addWindowListcncr(ncwWindowAdaptcr(){
publicvoidwindowClosing(WindowEvcnlevt){
f.setVisible(false);
f.dispose();
System.exit(O);
)
));
f.setLayout(newGridLayout(3,3,10,10));
btn=newButton[9];
tbr(in(i=0;i<=8;i++){
intj=i+1;
btn[ij=newButtonC"1+j);
f.add(btn[i]);
)
//f.pack();
f.se(Size(IOO,100);
f.setVisible(true);
}
程序運行結(jié)果見圖10-5。
圖10-5網(wǎng)格布局(GridLayout)
4.卡片布局
卡片布局(CardLayout)把每個組件看作一張卡片,好像一副撲克牌,它們疊在一起,每次
只有最外面的一個組件可以被看到。
packagesample;
importjava.awt.*;
importjava.awt.event.*:
publicclassMyCardLayout{
publicstaticvoidmain(Stringargs[J){
newMyCardLayout().go();
}
publicvoidgo(){
finalFramef=newFrame("CardLayout演示。
f.addWindowListener(newWindowAdapter。{
publicvoidwindowClosing(WindowEvcntcvt){
f.setVisible(false);
f.dispose();
System.exit(O);
)
});
f.sctSizc(300,100);
f.setLayou((newCardLayoutO);
finalFramefl=f;
for(inti=l;i<=5;++i){
Buttonb=newButton("Button"+i);
b.setSize(100,25);
b.addActionListcncr(newActionListcncr(){
publicvoidaclionPeifbrmed(ActionEventae){
CardLayoutcl=(CardLayout)f1.gctLayout();
cl.next(fl);
I
));
f.add(b,"button*+i);
f.setVisible(true);
程序運行結(jié)果見圖10-6。
圖10-6卡片布局(CardLayout)
單擊按鈕Button1后,顯示下一個按鈕Button2,依此類推。
5.網(wǎng)格包布局
網(wǎng)格包(GridBag)布局足基于網(wǎng)格布局之上的一種改進。和基本的網(wǎng)格布局不同的是,
個組件可以跨越一個或多個網(wǎng)格,這樣一來增加了布局的靈活性。為了處理網(wǎng)格的跨越性,
我們可以使用GridBagConstraints類。有興趣的讀者可以參考JavaAPI來了
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 車輛買賣賒購合同
- 倉房買賣合同協(xié)議書
- 的聘用合同年
- 銀行解除借款合同
- 《蘇武傳》教學(xué)設(shè)計 2024-2025學(xué)年統(tǒng)編版高中語文選擇性必修中冊
- Unit 1 How can I get there?PartA(教學(xué)設(shè)計)-2024-2025學(xué)年人教PEP版英語六年級上冊
- 山東醫(yī)學(xué)高等專科學(xué)?!段锢砘瘜W(xué)B(下)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東華宇工學(xué)院《土木工程材料》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西藥科職業(yè)學(xué)院《財務(wù)大數(shù)據(jù)決策》2023-2024學(xué)年第二學(xué)期期末試卷
- 內(nèi)蒙古電子信息職業(yè)技術(shù)學(xué)院《有色冶金設(shè)備》2023-2024學(xué)年第二學(xué)期期末試卷
- 中債違約債券估值方法(2020年版)
- 《經(jīng)典常談》課件
- 四川省2024年中考數(shù)學(xué)試卷十七套合卷【附答案】
- 北師大版二年級數(shù)學(xué)下冊全冊10套試卷(附答案)
- GB/T 2423.17-2024環(huán)境試驗第2部分:試驗方法試驗Ka:鹽霧
- 數(shù)字出版概論 課件 第六章 數(shù)字內(nèi)容加工、管理技術(shù)
- 糖尿病并發(fā)癥的早期篩查
- 2019年山東省職業(yè)院校技能大賽中職組“沙盤模擬企業(yè)經(jīng)營”賽項規(guī)程
- GB/T 32399-2024信息技術(shù)云計算參考架構(gòu)
- 初中體育與健康 初二 水平四(八年級)田徑大單元教學(xué)設(shè)計+快速跑教案
- 2024年西南大學(xué)附中初升高選拔測試語文試卷真題(精校打?。?/a>
評論
0/150
提交評論