Java語言程序設(shè)計課后解答張思民版_第1頁
Java語言程序設(shè)計課后解答張思民版_第2頁
Java語言程序設(shè)計課后解答張思民版_第3頁
Java語言程序設(shè)計課后解答張思民版_第4頁
Java語言程序設(shè)計課后解答張思民版_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章Java概述

[1]為什么說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ū)ο?;?)跨平臺性;(4)健壯性;(5)安全性;(6)可移植性;

(7)多線程性;(8)動態(tài)性。

【3】試述Java開發(fā)環(huán)境的建立過程。

[解答]:Java開發(fā)環(huán)境的建立過程如下:

1.JDK的下載與安裝:從hup://下載最新版的JDK,單擊下載后的文件即出現(xiàn)

安裝界面;在此界面中打擊“next”按鈕即可;

2.JDK的配置:安裝好JDK后,設(shè)安裝路徑為c:\jdkl.5:還需要在環(huán)境變量中進行對應(yīng)的配

置。下面以Windows操作系統(tǒng)為例來進行配置。

1)設(shè)置JAVA_HOME環(huán)境變量:在桌面上用鼠標右鍵單擊“我的電腦”,依次選擇“屬性”、

“高級”、“環(huán)境變量”選項,新建一個系統(tǒng)變量,名稱為JAVA_HOME,值為c:\jdkl.5;

2)設(shè)置CLASSPATH環(huán)境變量,設(shè)置方法和JAVA_HOME一樣,其值為

c:\jdk1.5\lib\tools.jar;.;

3)更新PATH環(huán)境變量的值,編輯PATH系統(tǒng)變量,在最后添加c:\jdkl.5\bin;.。

[4]什么是JavaAPI?它提供的核心包的主要功能是什么?

[解答]:JavaAPI就是Java所提供的標準類庫,它把程序設(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.“〃”符號,它表示從符號開始到此行的末尾位置都作為注釋。

2.符號,它表示從“/*”開始到“*/”結(jié)束的部分都作為注釋部分,可以使多行

注釋。

[7]Java工具集中的javac、java^appletviewer各有什么作用?

[解答]:javac的作用:它是Java編譯器,用于將Java源程序編譯成字節(jié)碼文件;

java的作用:它是Java解釋器,用于解釋執(zhí)行Java字節(jié)碼文件;

appletviewer的作用:Applet程序瀏覽器,用于測試和運行Applet程序。

[8]如何建立和運行JavaApplet程序?

[解答]:JavaApplet程序的建立和運行過程:

I.建立Java源文件:首先創(chuàng)建Java的源代碼,即建立一個文本文檔,包括有符合Java規(guī)范

的語句。

2.編譯源文件:將Java源文件編譯成.Class的字節(jié)碼文件,然后再將字節(jié)碼文件嵌入到一

個HTML文件中。

3.利用瀏覽器解釋執(zhí)行html文件。

第2章Java基礎(chǔ)

[11什么是數(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值:

(1)z=x&y

(2)z=xly

(3)z=xly

(4)z=x?y

(5)z=~x

(6)z=x?y

(7)z=x?>y

[解答]:

publicclassTest_4{

publicstaticvoidmain(String[]args){

intx=4,y=2,z;〃初始化x,y,z

z=x&y;〃求z=x&y;即x與y的值

System.out.println("4_l:H+z);

z=xIy;〃求z=xly;即x或y的值

System.out.println("4_2:n+z);

z二x八y;〃求z=xAy;B|Jx異或y的值

System.out.println("4_3:"+z);

z二x>>y;〃求z=x?y;B|Jx右移y位的值

System.out.println("4_4:"+z);

z=~X;〃求Z=~X;即X位反的值

System.out.println(n4_5:n+z);

z=x?y;〃求z=x?y;BPx左移y位的值

System.out.println(,'4_6:',+z);

z=x>?y;〃求z=x?>y;BPx無符號右移y位的值

System.out.println(n4_7:"+z);

)

}

【5】假設(shè)x=10,y=20,z=30,求下列布爾表達式的值:

(1)x<10llx<10

⑵x>y8&y>x

(3)(xvy+z)&&(x+10<=20)

(4)z-y==x&&(y-z)==x

(5)x<10&&y>x

(6)x>yIIy>x

(7)!(x<y+z)II!(x+10<=20)

(8)(!(x==y))&&(x!=y)&&(x<yIIy<x)

[解答]:

publicclassTest_5{

publicstaticvoidmain(String[]args){

intx=10,y=20,z=30;

booleanflag;

〃求xvl0llx<10布爾值

flag=x<10IIx<10;

System.out.println("5_l:"+flag);

〃求x>y&&y<x布爾值

flag=x>y&&y<x;

System.out.println("5_2:"+flag);

〃求(xvy+z)&&(x+10v=20)布爾值

flag=(x<y+z)&&(x+10<=20);

System.out.println(n5_3:n+flag);

〃求z-y==x&&(y-z)==x布爾值

flag=z-y==x&&(y-z)==x;

System.out.println(n5_4:"+flag);

〃求xvl0&&x>10布爾值

flag=x<10&&x>10;

System.out.println("5_5:H+flag);

〃求x>ylly>x布爾值

flag=x>yIIy>x;

System.out.println(',5_6:',+nag);

〃求!(x<y+z)ll!(x+10v=20)布爾值

flag=!(x<y+z)II!(x+10<=20);

System.out.println(n5_7:"+flag);

〃求(!(x==y))&&(x!=y)&&(xvyllyvx)布爾值

flag=(!(x=y))&&(x!=y)&&(x<yIIy<x);

System.out.println(n5_8:"+nag);

}

)

[6]什么是表達式?什么是語句?

[解答]:表達式是由運算符,操作數(shù)和方法調(diào)用按照語言的語法構(gòu)造而成的符號序列。表達式

可用于計算個格式,位變量賦值以及幫助控制程序執(zhí)行流程。

語句:語句組成了一個執(zhí)行程序的基本單元,類似于自然語言的句子。包括表達式語句、復

合語句、控制語句等。

7]Java有哪些數(shù)據(jù)類型?請描述其分類情況。

[解答]:Java定義了8個基本數(shù)據(jù)類型:字節(jié)型,短整型,整型,長整型,字符型,浮點型,

雙精度型,布爾型。它們分為4組:

1)整數(shù)型(byte,short,int,long)

2)浮點數(shù)型(float,double)

3)字符型(char)

4)布爾型(boolean)

[8]試比較break和continue語句的區(qū)別?

[解答]:Break:強行退出循環(huán),忽略循環(huán)體中的任何其他語句和循環(huán)的條件的條件測試。

Continue:語句用來終止本次循環(huán)。其功能是終止當前正在進行的本輪循環(huán),即跳過后面剩余

的語句,轉(zhuǎn)而執(zhí)行循環(huán)的第一條語句,計算和判斷循環(huán)條件,決定是否進入下一輪循環(huán)。

[9]有一函數(shù):

x(x<l)

y=〈3x-2(lWx<10)

4x(x210)

編寫一程序,給定x值,輸出y值。

[解答]:

importjava.io.*;

publicclassTest_9{

publicstaticvoidmain(String[Jargs)throwsNumberFormatExceptionJOException{

InputStreamReaderisr=newInputStreamReader(System.in);

BufferedReaderbr=newBufferedReader(isr);

System.out.println("請輸入數(shù)字x的值:");

doublex=Double.parseDouble(br.readLineO);

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

[10]說明while和do.....while語句的差異。

[解答]:Do-while與while語句的主要區(qū)別在于,先執(zhí)行循環(huán)體中的語句再計算條件表達式,

所以do-while語句的循環(huán)體至少執(zhí)行一次。

[11]寫出下列語句執(zhí)行后的結(jié)果:

for(k=l;k<=5;k++)

(

if(k>4)break;

System.out.println(4<k=,,+k);

)

[解答]:

publicclassTest_ll{

publicstaticvoidmain(String[]args){

intk;

for(k=1;k<=5;k++){

if(k>4)

break;

System.out.println(',k=,'+k);

)

)

)

io

[12]編寫程序,求的值。

k=\

[解答]:

publicclassTest_12{

publicstaticvoidmain(String[]args){

intk,sum=0;

for(k=l;k<=10;k++){

sum=sum+k*k;

)

System.out.println("sum="+sum);

)

)

【13】編寫一程序,輸入3個數(shù),能按大小順序輸出。

[解答]:

importjava.io.BufferedReader;

importjava.io.lOException;

importjava.io.InputStreamReader;

publicclassTest_13{

publicstaticvoidmain(String[]args)throwsNumberFormatExceptionJOException{

InputStreamReaderisr=newInputStreamReader(System.in);

BufferedReaderbr=newBufferedReader(isr);

inta[]=newint[3];

intk,temp;

System.out.println(”請輸入3個數(shù)字(每輸入一個數(shù)字后請換行)”);

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

a[i]=Integer.parseInt(br.readLine());

}

for(inti=0;i<a.length;i++){

k=i;

for(intj=k+1;j<a.length;j++){

if(a[j]<a[k]){

k=j;

)

)

if(k!=i){

temp=a[i];

a[i]=a[k];

a[k]=temp;

)

}

System.out.printin("從小到大排序:");

for(inti=0;i<a.length;i++){

System.out.print(alij+"");

[14]編寫一各Java程序,查找1?100之間的素數(shù)并將運行結(jié)果輸出。

[解答]:

publicclassTest_14{

publicstaticvoidmain(String[Jargs){

intm,k,i,n=0;

booleanflag;

for(m=1;m<=100;m=m+2){

flag=true;

k=(int)Math.sqrt(m);

for(i=2;i<=k;i++)

if(m%i==0){

flag=false;

break;

if(flag){

System.out.print(m+"n);

n=n+1;

if(n%10==0)

System.out.printlnO;

【15】運行下面程序,并分析其執(zhí)行過程:

Publicclassmultiplication{

publicstaticvoidmain(Stringargs[]){

inti,j;

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=1;i<10;i++){

for(j=l;j<=i;j++){

System.out.print(i+"*"+j+"="+i*j+"");

}

System.out.printlnO;

結(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

乘法表

*/

【16】編寫程序?qū)崿F(xiàn):輸入一組整數(shù),比較并輸出其中的最大值和最小值,再將數(shù)組元素從

小到大排序并將運行結(jié)果輸出。

[解答]:

importjava.io.BuIferedReader;

importjava.io.IOException;

importjava.io.InputStreamReader;

publicclassTest」6{

publicstaticvoidmain(String[]args)throwsNumberFormatException,IOException{

InputStreamReaderisr=newInputStreamReader(System.in);

BufferedReaderbr=newBufferedReader(isr);

inta[]=newint[5];

intk,temp;

System.out.println("請輸入5個數(shù)字(每輸入一個數(shù)字后請換行)”);

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

a[i]=Integer.parseInt(br.readLine());

}

for(inti=0;i<a.length;i++){

for(intj=k+1;j<a.length;j++){

if(a[j]<a[k]){

k=j;

)

)

if(k!=i){

temp=a[i];

a[i]=a[kj;

a[k]=temp;

)

}

System.out.prinlln("最小數(shù)字:H+a[0]);

System.out.println("最大數(shù)字:n+a[a.length-l]);

System.oul.prinlln("從小到大排序:");

for(inti=0;i<a.length;i++){

System.out.print(a[i]+"H);

[17]編寫打印下列圖形的程序:

(1)(2)(3)

#*******$

##*****$$$

###***$$S$

####*$$$

$

[解答]:

publicclassTest_17_l{

publicstaticvoidmain(String[]args){

inti,j;

for(i=1;i<=4;i++){

for(j=l;j<=i;j++){

System.out.print(n#M+“”);

)

System.out.println();

)

)

)

publicclassTest_17_2{

publicstaticvoidmain(String[]args){

inti,j,k;

for(i=0;i<4;i++){

for(k=0;k<i;k++){

System.out.print(u");

)

for(j=0;j<=6-2*i;j++)

System.out.print("*");

System.out.println();

)

)

)

publicclassTest_17_3{

publicstaticvoidmain(String[Jargs){

inti=0,blank,j,star,input=5;//input是輸入的行數(shù)

Strings='H,;

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

(

blank=Math.abs(i-input/2);

for(j=1;j<=blank;j++)

s+="M;

star=input-2*blank;

for(j=1;j<=star;j++)

s+="$”;

s+二"\n”;

)

System.out.print(s);

[18]考慮一個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歹U,元素個數(shù)為6

(2)第一行元素的名字為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<3;j++){

a[i][j]=O;

)

)

(5)

intsum=0;

sum=a[0][2]+a[l][2];

[19]求3X3矩形對角元素之和。

[解答]:

publicclassTest_19{

publicstaticvoidmain(String[]args){

inti,j,sum=0;

inta[][l=newint[3][3];

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][jJ+"");

System.out.println();

)

〃顯示對角線之和

for(i=0;i<3;i++){

sum=sum+a[i][i];

)

System.out.printing對角線之和:"+sum);

)

)

[20]編寫一程序,查找某一字符串是否包含有“abc”。

[解答]:

publicclassTest_20{

publicstaticvoidmain(String[Jargs){

Strings="yangenabcu;

inta=s.indexOf("abcn);

〃a位找到abc的下標,找不到則返回-1

if(a!=-l){

System.out.print("包含字符串a(chǎn)bc");

}else{

System.out.print("不包含字符串a(chǎn)bc");

【21】設(shè)?字符串中包含有大寫字母的字符,也有下寫字母的字符,編寫一程序,將其中的

大小寫字母的字符分別輸出。

[解答1

publicclassTest_21{

publicstaticvoidmain(String[]args){

Strings=,,sdfKJjKjjsjdfKKJkjkjSDFsdfn;

Stringsl=,n,,s2=,,n,s3;

for(inti=O;i<s.length();i++){

s3="ABCDEFGHIJKLMNOPQRSTUVWXYZ”;

if(s3.indexOf(s.charAt(i))!=-1){

sl=sl+s.charAt(i);

}else{

s2=s2+s.charAt(i);

)

System.out.println("大寫字母:");

System.out.println(s1);

System.out.println("小寫字母:**);

System.out.println(s2);

)

)

【22】輸出一字符串,統(tǒng)計其中有多少個單詞。(單詞之間用空格分隔)。

[解答]:

importjava.util.*;

publicclassTest_22{

publicstaticvoidmain(String[]args){

inti=0;

Strings="Helloworldilovejava";

StringTokenizerst=newStringTokenizer(s,nn);

while(st.hasMoreTokens()){

i++;

System.out.println(st.nextToken());

)

System.out.print("單詞個數(shù):"+i);

)

)

第3章面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ)

[1]什么是Java程序使用的類?什么是類庫?

[解答]:Java程序的基本單位是類。對象是對事物的抽象,而類是對對象的抽象和歸納,找出

事物的共性,把具有共同性質(zhì)的事物歸結(jié)為一類,得出一個抽象的概念一類。類是具有相同屬

性和方法的一組對象的集合,類是在對象之上的抽象,對象則是類的具體化,一旦建立類之

后,就可用它來建立許多你需要的對象。

Java的類庫是系統(tǒng)提供的己實現(xiàn)的標準類的集合,是Java編程的API(ApplicationProgram

Interface),它可以幫助開發(fā)者方便、快捷地開發(fā)Java程序。

[2]如何定義方法?在面向?qū)ο蟪绦蛟O(shè)計中方法有什么作用?

[解答]:方法的定義由兩部分組成:方法聲明和方法體。方法聲明的基本格式如下:

返回類型方法名(形式參數(shù))

(

…〃方法體內(nèi)容

)

方法聲明包括方法名、返回類型和形式參數(shù),方法的小括號是方法的標志;方法體為實

現(xiàn)方法行為的Java語句。

在面向?qū)ο蟪绦蛟O(shè)計中,方法所起的作用是完成對類和對象屬性操作。

[3]簡述構(gòu)造方法的功能和特點。下面的程序片段是某學生為student類編寫的構(gòu)造方法,

請指出其中的錯誤。

voidStudent(intno,Stringname)

studentNo=no;

studentName=name;

returnno;

}

[解答J:構(gòu)造方法是一個特殊的方法,主要用于初始化新創(chuàng)建的對象。構(gòu)造方法的方法名要求

與類名相同,用戶不能直接調(diào)用,只能通過new運算符調(diào)用,而且構(gòu)造方法是不返回任何數(shù)

據(jù)類型,甚至也不返回void數(shù)據(jù)類型,即不能在構(gòu)造方法前加void。

以匕的代碼段出錯于:①構(gòu)造方法Student。前不能加void②不能用return語句

【4】定義?個表示學生的student類,包括的域有學號、姓名、性別、年齡,包括的方法有

獲得學號、姓名、性別、年齡及修改年齡。編寫Java程序創(chuàng)建student類的對象及測試其方法

的功能。

[解答]:程序代碼段如下:

classstudent{

privateStringid;

privateStringname;

privateStringsex;

privateht.e;

publicStringgetld()

{returnid;}

publicStringgetName()

{returnname;}

publicStringgetSex()

{returnsex;}

publicintgetAge()

{returnage;}

voidsetAge(intage)

{this.age=age;}

)

publicclassTestStudent

{publicstaticvoidmain(Stringargs[J)

{studentstu=newstudent(“0401398”,"楊小明“,“男”,20);

System.out.println(nstudentinfo:"+n\n學號:n+stu.getld()+"\n姓名"+

stu.getName()+"\n性別:”+stu.getSex()+"\n年齡:”+stu.getAge());

stu.setAge(19);

System.out.println("修改后的年齡為:"+stu.getAge());

【5】擴充、修改程序。為第4題的student類定義構(gòu)造函數(shù)初始化所有的域,增加一個方法

publicStringprintlnfo。把student類對象的所有域信息組合形成個字符串,并在主類中創(chuàng)建

學生對象及測試各方法的功能。

[解答]:程序代碼段如下:

classstudent{

privateStringid;

privateStringname;

privateStringsex;

privateht組e;

student(Stringid,Stringname,Stringsex,intage)

{this.id=id;

=name;

this.sex=sex;

this.age=age;

}

publicStringgetld()

{returnid;}

publicStringgetName()

{returnname;}

publicStringgetSex()

{returnsex;}

publicintgetAge()

{returnage;}

voidsetAge(intage)

{this.age=age;}

publicStringprintlnfo()

{Strings=''studentinfo:"+"\n學號:n+id+n\n姓名"+name+”\n性別:n+sex+”\n年齡”

+age;

System.out.println(s);

returns;

publicclassTestStudent

{publicstaticvoidmain(Stringargs[])

{studentstu=newstudent(“0401398“,“楊小明“男”,20);

stu.printlnfo();

stu.setAge(!9);

stu.printlnfo();

[6]什么是修飾符?修飾符的種類有哪些?它們各有什么作用?

[解答]:修飾符是用于限定類對象使用的權(quán)限,從而實現(xiàn)類中成員的信息隱臧。訪問修飾符適

用于類成員,而不是方法內(nèi)部的局部變量。Java常見的訪問修飾符有這4種:private,

default、protected和publico

(1)public可以被所有的類訪問

(2)pravite只能被類本身訪問,其他類無法訪問

(3)protected可以被類本身、它的子類(包括同一個包中以及不同包中的子類)

(4)default屬于默認的訪問狀態(tài),可以被類本身和同個包中的類訪問

[7]什么是抽象類?為什么要引入抽象類的概念?

[解答]:抽象類是用來描述人們在對問題領(lǐng)域進行分析、設(shè)計中得出的抽象概念,是對一系列

看上去不同,但是本質(zhì)上相同的具體概念的抽象。抽象類不具備實際功能,是專門設(shè)計用來

讓子類繼承的類,把這些具有共同特征的方法抽象出來,山子類負責這些抽象方法的實現(xiàn)細

節(jié),而父類僅提供此方法的名稱和聲明、沒有方法的主體,該類。

【8】什么是抽象方法?如何定義、使用抽象方法?

[解答]:用abstract關(guān)鍵字修飾的方法稱為抽象方法。抽象方法定義時,需在方法名前加上關(guān)

鍵字abstract,抽象方法只有方法聲明,沒有代碼實現(xiàn)的空方法。因此,必須通過其子類來重

寫父類中定義的每一個抽象方法。

【9】包的作用是什么?如何在程序中引入已定義的類?使用已定義的用戶類、系統(tǒng)類有哪些

主要方式?

[解答]:包的作用是將類和接口封裝在一起,方便了類和接U的管理和調(diào)用。要引入包中己定

義的類,必須用關(guān)鍵字import來導入這些類所在的包。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ā)送者只需要指導另外的實例可以執(zhí)行一種特定操作即可。Java中提供兩種多態(tài)機制:

方法重載與方法重寫。

[12]解釋this和super的意義和作用。

[解答]:this指的是引用當前對象或類名稱,當一個類的實例變量名與一個方法中參數(shù)名相

同時,則參數(shù)就隱藏了實例變量名,此時可通過使用關(guān)鍵字this來訪問它;super用來引用當

前對象的父類,通過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子句有類聲明的extends子句基本相同,不同的是一個接口可有多個父接口,用逗

號隔開,而一個類只能有一個父類。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動物

{publicabstractvoidcry();}

class狗extends動物

{publicvoidcry()

{System.out.println("汪汪…");}

}

classTest

{publicstaticvoidmain(Stringargs[J)

{動物dongwu;

dongwu=new狗0;

dongwu.cryO;

)

)

〃將抽象類改寫成接口,并實現(xiàn)這個接口

interface動物

{publicvoidcry();}

class狗implements動物

{publicvoidcry()

{System.out.println("汪汪.....");)

)

classTest

{publicstaticvoidmain(Stringargs[])

{動物dongwu;

dongwu=new狗0;

dongwu.cry();

)

[15]編寫一個程序?qū)崿F(xiàn)包的功能。

[解答]:包的功能實現(xiàn)包括兩步驟:打包、引用包,其具體實現(xiàn)如下:

⑴〃設(shè)當前運行目錄的子目錄test'bag下有MyBag.class類,其源程序如下:

packagetest.bag;

publicclassMyBag

(

publicvoidprint()

{System.out.println("包的功能測試)}

)

(2)〃在當前目錄的TestBag.java中,要使用子目錄test\bag下有MyBag.class類中的print()

〃方法,其源程序如下:

importtest.bag.MyBag;

publicclassTestBag

{publicstaticvoidmain(Stringargs[])

{MyBagmb二newMyBagO;

mb.print();

)

)

[16]填空:

(1)如果類A繼承了類B,則類A被稱為類,類B被稱為類。

[解答]:子父

(2)繼承使成為可能,它節(jié)省了開發(fā)時間。

[解答]:代碼復用

(3)如果一個類包含一個或多個abstract方法,它就是一個類。

[解答]:抽象

(4)一個子類一般比其超類封裝的功能要。

[解答]:強

(5)標記成的類的成員不能由該類的方法訪問。

[解答]:static

(6)Java用關(guān)鍵字指明繼承關(guān)系。

[解答]:extends

⑺this代表了的引用。

[解答]:當前對象

(8)super表示的是當前對象的對象。

[解答]:父類

(9)抽象類的修飾符是。

[解答]:abstract

(10)接口中定義的數(shù)據(jù)成員是。

[解答]:常量

(11)接口中沒有什么方法,所有成員方法都是方法。

[解答]:實例空

第4章圖形用戶界面設(shè)計

[|]什么是圖形用戶界面?試列舉出圖形用戶界面中你使用過的組件。

[解答]:圖形用戶界面或圖形用戶接口(GraphicalUserInterface,GUI)是指采用圖形方式顯示

的計算機操作環(huán)境用戶接口。與早期計算機使用的命令行界面相比,圖形界面對于用戶來說

更為簡便易用。(比如你用windowsXP和使用DOS操作系統(tǒng)的差別)。GUI是事件驅(qū)動的,

也就是說,一旦用戶與GUI交互,GUI組件就會生成”事件“(動作)。常見交互包括移動鼠標、

單擊鼠標按鈕、在文字段輸入、從菜單選擇一個選項以及關(guān)閉一個窗口等等。

在windwosXP的GUI中,使用過窗口,菜單條,按鈕等

【2】簡述Java的事件處理機制。什么是事件源?什么是監(jiān)聽者?在Java的圖形用戶界面中,

誰可以充當事件源?誰可以充當監(jiān)聽者?

[解答]:java的事件處理機制就是,事件源允許監(jiān)聽器注冊的事件對象,在事件發(fā)生的時候想

相關(guān)的注冊對象發(fā)送?個,事件對象,監(jiān)聽器便根據(jù)相關(guān)的信息來選擇運行相關(guān)的代碼。

事件源:英文名為eventsource,是指事件發(fā)生的地方,也就是引起事件的組件,按鈕Button,

文本組件等都可以當做事件源。比如說,你點擊一個button,那么button就是事件源,要想

使button對某些事件進行響應(yīng),你就需要注冊特定的監(jiān)聽者。(具體請看第5章的事件處理)

監(jiān)聽者:英文名為eventhandler事件處理者,又叫監(jiān)聽器。具體的對監(jiān)聽的事件類,當

它監(jiān)聽到eventobject產(chǎn)生的時候,它就調(diào)用相應(yīng)的方法,進行處理。

在java中,AWT組件和swing組件都可以當做事件源;java.awt.event.*,里面各種類都可

以為監(jiān)聽者。

[3]動作事件的事件源可以有哪些?如何響應(yīng)動作事件?

[解答]:動作事件的事件源可以有:ButtonJButton,Menuitem,o

響應(yīng)動作事件的過程?般為:

聲明和實例化事件源,如:Buttonbtn=newButton(“確定”);

注冊監(jiān)聽:btn.addActionListener(this);〃this指明是在當前類實現(xiàn)處理

實現(xiàn)接口:publicvoidactionPerformed(ActionEvente){〃具體代碼};

[4]說明文本框與標簽之間的區(qū)別。

[解答]:文本框(TextFieki)和標簽(Label)都可以進行文字表達。TextFiekl允許用戶編輯單行

文本的文本組件,他可以添加相應(yīng)的監(jiān)聽事件;而Label對象是一個可在容器中放置文本的組

件。一個標簽只顯示一行只讀文本。文本可由應(yīng)用程序更改,但是用戶不能直接對其進行編

輯。

[5]編寫程序包含一個標簽、一個文本框和一個按鈕,當用戶單擊按鈕時,程序把文本框中

的內(nèi)容復制到標簽中。

[解答]:Test4_5.java

importjava.awt.*;

importjava.awt.event.*;

publicclassTest4_5extendsFrameimplementsActionListener{

Labellb;

TextFieldtxtFl;

Buttonbtn;

publicTest4_5(){

//界面布局和初始化

super("文本框和標簽的練習)

setSize(260,200);

setVisible(true);

setLayout(newFlowLayout());

lb=newLabel(n");〃用空格占位,以防止label個別字符出現(xiàn)問題

txtFl=newTextField(20);

btn=newButton("顯示字符”);

add(txtFl);add(btn);

add(lb);

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEventwe){

System.exit(O);

}});

validate();

〃增加監(jiān)聽

btn.addActionListener(this);

publicvoidactionPerformed(ActionEvente){

Stringstrtmp=txtFl.getText();

Ib.setText(strtmp);

Ib.setForeground(Color.red);

)

publicstaticvoidmain(String[]args){

newTest4_5();

【6】設(shè)計一個加法計算器,如圖4.25所示(課本PD4),在文本框中輸入兩個整數(shù),單擊“=”

按鈕時.,在第三個文本框中顯示這兩個數(shù)據(jù)的和。

[解答]:Test4_6.java

importjava.awt.*;

importjava.awt.event.*;

classTest4_6extendsFrameimplementsActionListener{

TextFieldtxtFll,txtF12,txtF13;

Buttonbtn;

publicTest4_6(){

super("簡單加法運算器)

setSize(300,200);

setVisible(true);

setLayout(newFlowLayoutO);

txtFll=newTextField(5);

txtF12=newTextField(5);

txtF13=newTextField(lO);

btn=newButton("=");

add(newLabel("請輸入整數(shù)”));

add(txtFll);

add(newLabel('^+'^));

add(txtF12);

add(btn);

add(txtF13);

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEventwe){

System.exit(O);

}});

validate();

btn.addActionListener(this);

publicvoidactionPerformed(ActionEvente){

intadd=Integer.parseInt(txtFl1.getTextO)

+Integer.valueOf(txtF12.getText()).intValue();〃兩種字符串轉(zhuǎn)整形的方法

txtF13.setText(String.valueOf(add));

publicstaticvoidmain(String[]args){

newTest4_6();

[7]說明文本框與文本區(qū)之間的區(qū)別,它們都可以引發(fā)什么事件?如何響應(yīng)此事件?

[解答]:TextField對象是允許編輯單行文本的文本組件。

TextArea對象是顯示文本的多行區(qū)域。可以將它設(shè)置為允許編輯或只讀

TextFiled和TextArea可以引用KeyEvenl,ActionEvent,分別用使用組件的addKeyListener方法

注冊和addActionListener以接收事件。

[8]設(shè)計?個計算器,其中要使用按鈕、文本框、布局管理和標簽等構(gòu)件,能實現(xiàn)加、減、

乘、除運算。

[解答]:Text4_8.java

importjava.awt.*;

importjava.awt.event.*;

publicclassTest4_8extendsFrameimplementsActionListener{

TextFieldtxtFl1,txtF12,txtF13;

Buttonbtn1,btn2,btn3,btn4,btn5;

publicTest4_8(){

super("簡單的四則運算器)

setSize(300,400);

setVisible(true);

setLayout(newGridLayout(3,l));

txtFl1=newTextField(5);

txtF12=newTextField(5);

txtF13=newTextField(5);

btnl=newButton(n4-n);

btn2=newButton(M-n);

btn3=newButton,*");

btn4=newButton(1”);

Panelpl=newPanel();p1.add(txtFl1);p1.add(txtF12);p1.add(new

Label(u=n));pl.add(txtF13);

Panelp2=newPanel();p2.add(btnI);p2.add(btn2);p2.add(btn3);p2.add(btn4);

add(newLabel("請在下面輸入運算數(shù)并運算規(guī)則進行運算:“));

add(pl);

add(p2);

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEventwe){

System.exit(O);

}});

validate();

btn1.addActionListener(this);

btn2.addActionListener(this);

btn3.addActionListener(this);

btn4.addActionListener(this);

)

publicvoidactionPerformed(ActionEvente){

floatnum1=Float.valueOf(txtFl1.getText()).floatValue();

floatnum2=Float.valueOf(txtF12.getText()).floatValue();〃兩種字符串轉(zhuǎn)整形的方法

floatrs=0;

if(e.getSource()==btnl){

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論