![Java語(yǔ)言程序設(shè)計(jì)課后解答張思民版_第1頁(yè)](http://file4.renrendoc.com/view5/M00/12/3C/wKhkGGYoVfOAVEVfAALSdKRHycw133.jpg)
![Java語(yǔ)言程序設(shè)計(jì)課后解答張思民版_第2頁(yè)](http://file4.renrendoc.com/view5/M00/12/3C/wKhkGGYoVfOAVEVfAALSdKRHycw1332.jpg)
![Java語(yǔ)言程序設(shè)計(jì)課后解答張思民版_第3頁(yè)](http://file4.renrendoc.com/view5/M00/12/3C/wKhkGGYoVfOAVEVfAALSdKRHycw1333.jpg)
![Java語(yǔ)言程序設(shè)計(jì)課后解答張思民版_第4頁(yè)](http://file4.renrendoc.com/view5/M00/12/3C/wKhkGGYoVfOAVEVfAALSdKRHycw1334.jpg)
![Java語(yǔ)言程序設(shè)計(jì)課后解答張思民版_第5頁(yè)](http://file4.renrendoc.com/view5/M00/12/3C/wKhkGGYoVfOAVEVfAALSdKRHycw1335.jpg)
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè) 民間借款合同范例
- 關(guān)于煤合同范本
- 書采購(gòu)合同范本 文庫(kù)
- 華夏保險(xiǎn)合同范本
- 些合同屬于標(biāo)準(zhǔn)合同范本
- 信息咨詢合同范本
- 協(xié)議制合同范例
- 個(gè)人鋪面出租合同范例
- 介紹返合同范本
- 麗水場(chǎng)地租賃合同范例
- 二零二五年度文化教育培訓(xùn)中心承包工程2篇
- 2025年廣州中醫(yī)藥大學(xué)順德醫(yī)院(佛山市順德區(qū)中醫(yī)院)招考聘用高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年華僑港澳臺(tái)學(xué)生聯(lián)招考試英語(yǔ)試卷試題(含答案詳解)
- 2025-2030年中國(guó)美容院行業(yè)營(yíng)銷創(chuàng)新戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025年江蘇省宿遷市事業(yè)單位引進(jìn)名校優(yōu)生120人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 人教版四年級(jí)上冊(cè)寒假數(shù)學(xué)計(jì)算題天天練及答案(共15天)
- 2024人教版英語(yǔ)七年級(jí)下冊(cè)《Unit 3 Keep Fit How do we keep fit》大單元整體教學(xué)設(shè)計(jì)2022課標(biāo)
- 山東省海洋知識(shí)競(jìng)賽(初中組)考試題及答案
- 藥品流通監(jiān)管培訓(xùn)
- JD37-009-2024 山東省存量更新片區(qū)城市設(shè)計(jì)編制技術(shù)導(dǎo)則
- 《廣西高標(biāo)準(zhǔn)農(nóng)田耕地質(zhì)量評(píng)價(jià)工作 指導(dǎo)手冊(cè)》
評(píng)論
0/150
提交評(píng)論