Java語(yǔ)言程序設(shè)計(jì)課后解答張思民版_第1頁(yè)
Java語(yǔ)言程序設(shè)計(jì)課后解答張思民版_第2頁(yè)
Java語(yǔ)言程序設(shè)計(jì)課后解答張思民版_第3頁(yè)
Java語(yǔ)言程序設(shè)計(jì)課后解答張思民版_第4頁(yè)
Java語(yǔ)言程序設(shè)計(jì)課后解答張思民版_第5頁(yè)
已閱讀5頁(yè),還剩104頁(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)介

第1章Java概述

[1]為什么說(shuō)Java的運(yùn)行與計(jì)算機(jī)硬件平臺(tái)無(wú)關(guān)?

[解答]:Java編譯器能夠產(chǎn)生一種與計(jì)算機(jī)體系結(jié)構(gòu)無(wú)關(guān)的字節(jié)指令(ByteCode),只要安裝

了Java虛擬機(jī),Java就可以在相應(yīng)的處理機(jī)上執(zhí)行。利用Java虛擬機(jī)就可以把Java字節(jié)碼

程序跟具體的操作系統(tǒng)以及硬件平臺(tái)分隔開來(lái)。

[2]Java有什么特點(diǎn)?

[解答]:Java的特點(diǎn)有:

(1)簡(jiǎn)單性:(2)面向?qū)ο?;?)跨平臺(tái)性;(4)健壯性;(5)安全性;(6)可移植性;

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

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

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

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

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

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

置。下面以Windows操作系統(tǒng)為例來(lái)進(jìn)行配置。

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

“高級(jí)”、“環(huán)境變量”選項(xiàng),新建一個(gè)系統(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所提供的標(biāo)準(zhǔn)類庫(kù),它把程序設(shè)計(jì)所需要的常用的方法和接口分

類封裝成包。在JavaAPI中主要包括核心java包、javax擴(kuò)展包和org擴(kuò)展包等。核心java

包中封裝了程序設(shè)計(jì)所需要的主要應(yīng)用類。

[5]如何編寫和運(yùn)行Java應(yīng)用程序?

[解答]:Java應(yīng)用程序的編寫和運(yùn)行過(guò)程:

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

的語(yǔ)句。

2.編譯源文件:“編譯”就是將一個(gè)源代碼文件翻譯成計(jì)算機(jī)可以理解和處理的格式的過(guò)程。

Java源程序編譯后會(huì)生成一個(gè)字節(jié)碼文件,即帶擴(kuò)展名class的文件。Java字節(jié)碼文件中包含

的使Java解釋程序?qū)⒁獔?zhí)行的指令碼。

3.執(zhí)行字節(jié)碼文件:通過(guò)Java虛擬機(jī)運(yùn)行字節(jié)碼文件。

[6]為什么要為程序添加注釋,在Java程序中如何為程序添加注釋?

[解答]:注釋是程序中的說(shuō)明性文字,是程序的非執(zhí)行部分。它的作用是為程序添加說(shuō)明,加

程序的可讀性。

Java使用以下二種方式對(duì)程序進(jìn)行注釋:

1.“〃”符號(hào),它表示從符號(hào)開始到此行的末尾位置都作為注釋。

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

注釋。

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

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

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

appletviewer的作用:Applet程序?yàn)g覽器,用于測(cè)試和運(yùn)行Applet程序。

[8]如何建立和運(yùn)行JavaApplet程序?

[解答]:JavaApplet程序的建立和運(yùn)行過(guò)程:

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

的語(yǔ)句。

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

個(gè)HTML文件中。

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

第2章Java基礎(chǔ)

[11什么是數(shù)據(jù)類型?為什么要將數(shù)據(jù)劃分為不同的數(shù)據(jù)類型?

[解答]:Java是們強(qiáng)類型語(yǔ)言。數(shù)據(jù)類型是用來(lái)區(qū)分不同的數(shù)據(jù);由于數(shù)據(jù)在存儲(chǔ)時(shí)所需要

的容量各不相同,不同的數(shù)據(jù)就必須要分配不同大小的內(nèi)存空間來(lái)存儲(chǔ),所有就要將數(shù)據(jù)劃

分成不同的數(shù)據(jù)類型。

[2]Java中有哪些數(shù)據(jù)類型?

[解答]:Java中有8種基本數(shù)據(jù)類型:字節(jié)型(byte),短整型(short),整型(int),長(zhǎng)整型(long),

字符型(char),單精度型(float),雙精度型(double),布爾型(boolean)。

[3]聲明變量的作用是什么?

[解答]:變量時(shí)一個(gè)數(shù)據(jù)存儲(chǔ)空間的表示,將數(shù)據(jù)指定給變量,就是將數(shù)據(jù)存儲(chǔ)至對(duì)應(yīng)的內(nèi)存

空間,調(diào)用變量,就是將對(duì)應(yīng)的內(nèi)存空間的數(shù)據(jù)取出來(lái)使用。聲明變量就是申請(qǐng)一個(gè)內(nèi)存空

間。

[4]若x=4,y=2,計(jì)算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無(wú)符號(hào)右移y位的值

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

)

}

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

(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]什么是表達(dá)式?什么是語(yǔ)句?

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

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

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

合語(yǔ)句、控制語(yǔ)句等。

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

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

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

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

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

3)字符型(char)

4)布爾型(boolean)

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

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

Continue:語(yǔ)句用來(lái)終止本次循環(huán)。其功能是終止當(dāng)前正在進(jìn)行的本輪循環(huán),即跳過(guò)后面剩余

的語(yǔ)句,轉(zhuǎn)而執(zhí)行循環(huán)的第一條語(yǔ)句,計(jì)算和判斷循環(huán)條件,決定是否進(jì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("請(qǐng)輸入數(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]說(shuō)明while和do.....while語(yǔ)句的差異。

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

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

[11]寫出下列語(yǔ)句執(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個(gè)數(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(”請(qǐng)輸入3個(gè)數(shù)字(每輸入一個(gè)數(shù)字后請(qǐng)換行)”);

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之間的素?cái)?shù)并將運(yùn)行結(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】運(yùn)行下面程序,并分析其執(zhí)行過(guò)程:

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ù)組元素從

小到大排序并將運(yùn)行結(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("請(qǐng)輸入5個(gè)數(shù)字(每輸入一個(gè)數(shù)字后請(qǐng)換行)”);

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]考慮一個(gè)2X3的數(shù)組a。

(1)為a寫一個(gè)設(shè)聲明。試問(wèn),這樣的聲明使a有多少行,多少列,多少元素?

(2)寫出a的第1行的所有元素的名字。

(3)寫一條語(yǔ)句,置行1列2的元素為零。

(4)寫一個(gè)嵌套for結(jié)構(gòu),將a的每個(gè)元素初始化為零。

(5)定條語(yǔ)句,求第3列元素的和。

[解答]:

(1)數(shù)組a有2行,3歹U,元素個(gè)數(shù)為6

(2)第一行元素的名字為a[0][0],a[0][l],a[0][2]

⑶置行1列2的元素為0,語(yǔ)句是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矩形對(duì)角元素之和。

[解答]:

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

)

〃顯示對(duì)角線之和

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

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

)

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

)

)

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

[解答]:

publicclassTest_20{

publicstaticvoidmain(String[Jargs){

Strings="yangenabcu;

inta=s.indexOf("abcn);

〃a位找到abc的下標(biāo),找不到則返回-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)計(jì)其中有多少個(gè)單詞。(單詞之間用空格分隔)。

[解答]:

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("單詞個(gè)數(shù):"+i);

)

)

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

[1]什么是Java程序使用的類?什么是類庫(kù)?

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

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

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

后,就可用它來(lái)建立許多你需要的對(duì)象。

Java的類庫(kù)是系統(tǒng)提供的己實(shí)現(xiàn)的標(biāo)準(zhǔn)類的集合,是Java編程的API(ApplicationProgram

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

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

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

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

(

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

)

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

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

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

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

請(qǐng)指出其中的錯(cuò)誤。

voidStudent(intno,Stringname)

studentNo=no;

studentName=name;

returnno;

}

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

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

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

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

【4】定義?個(gè)表示學(xué)生的student類,包括的域有學(xué)號(hào)、姓名、性別、年齡,包括的方法有

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

的功能。

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

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學(xué)號(hào):n+stu.getld()+"\n姓名"+

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

stu.setAge(19);

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

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

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

學(xué)生對(duì)象及測(cè)試各方法的功能。

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

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學(xué)號(hào):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]什么是修飾符?修飾符的種類有哪些?它們各有什么作用?

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

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

default、protected和publico

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

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

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

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

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

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

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

讓子類繼承的類,把這些具有共同特征的方法抽象出來(lái),山子類負(fù)責(zé)這些抽象方法的實(shí)現(xiàn)細(xì)

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

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

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

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

寫父類中定義的每一個(gè)抽象方法。

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

主要方式?

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

義的類,必須用關(guān)鍵字import來(lái)導(dǎo)入這些類所在的包。import語(yǔ)句的一般形式如下:

import包名.類名

其中類名可以用通配符“*”代替。

使用已定義的用戶類、系統(tǒng)類主要有三種方式:直接調(diào)用、繼承和創(chuàng)建已定義的用戶類、

系統(tǒng)類的對(duì)象。但無(wú)論采用哪種方式,使用已定義的用戶類、系統(tǒng)類的前提條件是用戶類、

系統(tǒng)類應(yīng)該是用戶程序可見(jiàn)的類,為此用戶程序需要用import語(yǔ)句引人它所用到的用戶類、

系統(tǒng)類或用戶類、系統(tǒng)類所在的包。

[10]什么是繼承?如何定義繼承關(guān)系?

[解答]:同類事物具有共同性,在同類事物中,每個(gè)事物又具有其特殊性。運(yùn)用抽象的原則舍

棄對(duì)象的特殊性,抽取其共同性,則得到一個(gè)適應(yīng)于一批對(duì)象的類,這便是基類(父類),而

把具有特殊性的類稱為派生類(子類),派生類的對(duì)象擁有其基類的全部或部分屬性與方法,

稱作派生類對(duì)基類的繼承。

派生類繼承基類,必須使用關(guān)鍵字extends來(lái)聲明。比如派生類B繼承基類A,派生類

B定義的一般形式如下:

classBextendsA

【11】什么是多態(tài),如何實(shí)現(xiàn)多態(tài)?

[解答]:多態(tài)是指一個(gè)程序中同名的不同方法共存的情況。這些方法同名的原因是它們的最終

功能和目的都相同,但是由于在完成同一功能時(shí),可能遇到不同的具體情況,所以需要定義

含不同的具體內(nèi)容的方法,來(lái)代表多種具體實(shí)現(xiàn)形式。多態(tài)通常是一個(gè)消息在不同的類中用

不同的方法實(shí)現(xiàn)的。

多態(tài)的實(shí)現(xiàn)是由消息的接收者確定一個(gè)消息應(yīng)如何解釋,而不是由消息的發(fā)送者確定,

消息的發(fā)送者只需要指導(dǎo)另外的實(shí)例可以執(zhí)行一種特定操作即可。Java中提供兩種多態(tài)機(jī)制:

方法重載與方法重寫。

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

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

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

前對(duì)象的父類,通過(guò)super來(lái)訪問(wèn)父類被子類隱藏的成員變量、成員方法以及父類的構(gòu)造方法。

由于子類不繼承父類的構(gòu)造方法,可使用super來(lái)調(diào)用父類的構(gòu)造方法,并且super必須是子

類構(gòu)造方法中的第一條語(yǔ)句。

[13]什么是接口?為什么要定義接口?接口和類有什么異同?

[解答]:接口是用來(lái)調(diào)節(jié)各類之間的相互關(guān)系的一種結(jié)構(gòu),接口是抽象類的一種,只包含常量

和方法的定義,而沒(méi)有變量和具體方法的實(shí)現(xiàn),且其方法都是抽象方法。

接口定義的格式如下:

[public]interface接口名[extends父接口名列表]{

...〃接口體

)

extends子句有類聲明的extends子句基本相同,不同的是一個(gè)接口可有多個(gè)父接口,用逗

號(hào)隔開,而一個(gè)類只能有一個(gè)父類。Java中的類只能實(shí)現(xiàn)單重繼承,這雖然可以簡(jiǎn)化編程,

但畢竟沒(méi)有完全實(shí)現(xiàn)面向?qū)ο蟮墓δ?。定義接口的主要作用,就是幫助Java實(shí)現(xiàn)類間多重繼

承的結(jié)構(gòu)。而且接口還有以下好處:

?接口可以被多個(gè)類所實(shí)現(xiàn),這些類可以不相關(guān),從而具有相同的行為。

?通過(guò)接口可以了解對(duì)象的行為,而無(wú)需了解對(duì)象所對(duì)應(yīng)的類的結(jié)構(gòu)。

【14】將一個(gè)抽象類改寫成接口,并實(shí)現(xiàn)這個(gè)接口。

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

〃抽象類的應(yīng)用示例

abstractclass動(dòng)物

{publicabstractvoidcry();}

class狗extends動(dòng)物

{publicvoidcry()

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

}

classTest

{publicstaticvoidmain(Stringargs[J)

{動(dòng)物dongwu;

dongwu=new狗0;

dongwu.cryO;

)

)

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

interface動(dòng)物

{publicvoidcry();}

class狗implements動(dòng)物

{publicvoidcry()

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

)

classTest

{publicstaticvoidmain(Stringargs[])

{動(dòng)物dongwu;

dongwu=new狗0;

dongwu.cry();

)

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

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

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

packagetest.bag;

publicclassMyBag

(

publicvoidprint()

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

)

(2)〃在當(dāng)前目錄的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ā)時(shí)間。

[解答]:代碼復(fù)用

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

[解答]:抽象

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

[解答]:強(qiáng)

(5)標(biāo)記成的類的成員不能由該類的方法訪問(wèn)。

[解答]:static

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

[解答]:extends

⑺this代表了的引用。

[解答]:當(dāng)前對(duì)象

(8)super表示的是當(dāng)前對(duì)象的對(duì)象。

[解答]:父類

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

[解答]:abstract

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

[解答]:常量

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

[解答]:實(shí)例空

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

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

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

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

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

也就是說(shuō),一旦用戶與GUI交互,GUI組件就會(huì)生成”事件“(動(dòng)作)。常見(jiàn)交互包括移動(dòng)鼠標(biāo)、

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

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

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

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

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

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

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

文本組件等都可以當(dāng)做事件源。比如說(shuō),你點(diǎn)擊一個(gè)button,那么button就是事件源,要想

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

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

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

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

以為監(jiān)聽者。

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

[解答]:動(dòng)作事件的事件源可以有:ButtonJButton,Menuitem,o

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

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

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

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

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

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

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

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

輯。

[5]編寫程序包含一個(gè)標(biāo)簽、一個(gè)文本框和一個(gè)按鈕,當(dāng)用戶單擊按鈕時(shí),程序把文本框中

的內(nèi)容復(fù)制到標(biāo)簽中。

[解答]:Test4_5.java

importjava.awt.*;

importjava.awt.event.*;

publicclassTest4_5extendsFrameimplementsActionListener{

Labellb;

TextFieldtxtFl;

Buttonbtn;

publicTest4_5(){

//界面布局和初始化

super("文本框和標(biāo)簽的練習(xí))

setSize(260,200);

setVisible(true);

setLayout(newFlowLayout());

lb=newLabel(n");〃用空格占位,以防止label個(gè)別字符出現(xiàn)問(wè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è)計(jì)一個(gè)加法計(jì)算器,如圖4.25所示(課本PD4),在文本框中輸入兩個(gè)整數(shù),單擊“=”

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

[解答]:Test4_6.java

importjava.awt.*;

importjava.awt.event.*;

classTest4_6extendsFrameimplementsActionListener{

TextFieldtxtFll,txtF12,txtF13;

Buttonbtn;

publicTest4_6(){

super("簡(jiǎn)單加法運(yùn)算器)

setSize(300,200);

setVisible(true);

setLayout(newFlowLayoutO);

txtFll=newTextField(5);

txtF12=newTextField(5);

txtF13=newTextField(lO);

btn=newButton("=");

add(newLabel("請(qǐng)輸入整數(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]說(shuō)明文本框與文本區(qū)之間的區(qū)別,它們都可以引發(fā)什么事件?如何響應(yīng)此事件?

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

TextArea對(duì)象是顯示文本的多行區(qū)域??梢詫⑺O(shè)置為允許編輯或只讀

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

注冊(cè)和addActionListener以接收事件。

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

乘、除運(yùn)算。

[解答]:Text4_8.java

importjava.awt.*;

importjava.awt.event.*;

publicclassTest4_8extendsFrameimplementsActionListener{

TextFieldtxtFl1,txtF12,txtF13;

Buttonbtn1,btn2,btn3,btn4,btn5;

publicTest4_8(){

super("簡(jiǎn)單的四則運(yùn)算器)

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("請(qǐng)?jiān)谙旅孑斎脒\(yùn)算數(shù)并運(yùn)算規(guī)則進(jìn)行運(yùn)算:“));

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. 本站所有資源如無(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)論