Java語(yǔ)言程序設(shè)計(jì)(一)課后習(xí)題答案全集_第1頁(yè)
Java語(yǔ)言程序設(shè)計(jì)(一)課后習(xí)題答案全集_第2頁(yè)
Java語(yǔ)言程序設(shè)計(jì)(一)課后習(xí)題答案全集_第3頁(yè)
Java語(yǔ)言程序設(shè)計(jì)(一)課后習(xí)題答案全集_第4頁(yè)
Java語(yǔ)言程序設(shè)計(jì)(一)課后習(xí)題答案全集_第5頁(yè)
已閱讀5頁(yè),還剩123頁(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)介

L1指出JAVA語(yǔ)言的主要特點(diǎn)和JAVA程序的執(zhí)行過(guò)程。

答:(1)強(qiáng)類型;

(2)編譯和解釋;

(3)自動(dòng)無(wú)用內(nèi)存回收功能;

(4)面向?qū)ο螅?/p>

(5)與平臺(tái)無(wú)關(guān);

(6)安全性;

(7)分布式計(jì)算;

(8)多線程;

程序執(zhí)行過(guò)程如圖所示:

編寫源文件,編譯器編譯源文件轉(zhuǎn)換成字節(jié)碼,解釋器執(zhí)行字節(jié)碼。

1.2說(shuō)出開(kāi)發(fā)與運(yùn)行JAVA程序的重要步驟。

答:(1)編寫源文件:使用一個(gè)文本編譯器,如Edit或記事本,不可以使用Word.將編好

的源文件保存起來(lái),源文件的擴(kuò)展名必須是.java;

(2)編譯Java源文件:使用Java編譯器(javac.exe)編譯源文件得到字節(jié)碼文件;

(3)運(yùn)行Java程序:Java程序分為兩類一一Java應(yīng)用程序必須通過(guò)Java解釋器

(java.exe)來(lái)解釋執(zhí)行其字節(jié)碼文件;Java小應(yīng)用程序必須通過(guò)支持Java標(biāo)準(zhǔn)的瀏覽器來(lái)

解釋執(zhí)行。

1.3如何區(qū)分應(yīng)用程序和小應(yīng)用程序?

答:應(yīng)用程序在與源文件名字相同的類中,有main。方法,該方法代表應(yīng)用程序的入口;

小應(yīng)用程序必須有一個(gè)Applet類的子類,該類稱作主類,必須用public修飾。

1.4說(shuō)出JAVA源文件的命名規(guī)則。

答:源文件命名規(guī)則和類命名規(guī)則一樣,所有的單詞首字母都用大寫字母,且必須和源

文件的public類同名。

1.6JAVA語(yǔ)言使用什么字符集?共有多少個(gè)不同的字符?

答:Java語(yǔ)言使用Unicode字符集,共有65535個(gè)字符。

1.7JAVA語(yǔ)言標(biāo)識(shí)符的命名規(guī)則是什么?

(D由字母(包括英文字母、下劃線字符、美元字符、文字字符)和數(shù)字字符組成

(2)限定標(biāo)識(shí)符的第一個(gè)字符不能是數(shù)字字符

(3)不能和關(guān)鍵字重名

(4)長(zhǎng)度不能超過(guò)255個(gè)字符

1.8JAVA有那些基本數(shù)據(jù)類型,它們的常量又是如何書寫的?

數(shù)據(jù)類型關(guān)鍵字字節(jié)數(shù)默認(rèn)值常量舉例范圍

邏輯

布爾型boolean1falsefalse,truefalse,true

類型

?

字符型char20a,我,IT0?65535

字節(jié)性byte1012,13,45-128?127

整數(shù)短整型short2012,13,45-32768?32767

類型整型int8012,13,45-2E31?2E31-1

長(zhǎng)整型long8OL12L,13L,45L-2E63?2E63-1

-10E38?-10E-38

單精度浮點(diǎn)float4OF12.345F,6.7891F

浮點(diǎn)10E-38~10E38

類型-1OE3O8?-10E-308

雙精度浮點(diǎn)double80D12.345D,6.789ID

1OE-3O8?10E308

1.9指出下列內(nèi)容哪些是JAVA語(yǔ)言的整型常量,哪些是浮點(diǎn)數(shù)類型常量,哪些

兩者都不是。

整型常量:4)OxABCL,8)003,10)077,12)056L

浮點(diǎn)數(shù)類型常量:3)-lE-31,5).32E3113)0.,14).0

兩者都不是:1),2),6),7),9),11)

2

第二章運(yùn)算和語(yǔ)句

2.1Java的字符能參加算術(shù)運(yùn)算嗎?

可以。(1)字符與整型數(shù)據(jù)運(yùn)算,結(jié)果為整型數(shù)據(jù),只能賦給整型變量,如果附給字符

型變量會(huì)損失精度,需要強(qiáng)制類型裝換;

(2)字符與字符運(yùn)算,結(jié)果為字符型數(shù)據(jù),可以直接賦給字符型或整型變量。

2.2占字節(jié)多的變量能直接賦值給占字節(jié)少的變量么?

答:不能直接賦值,需要強(qiáng)制類型轉(zhuǎn)換。

2.3試用Java語(yǔ)言表達(dá)式描述以下數(shù)學(xué)計(jì)算式或邏輯條件:

1)丫=(4/3)乃"3

解:V=(4.0/3)*Math.PI*Math.pow(r,3);

2)

解:R=1.0/(1.0/R1+1.0/R2);

3)y=%'++6

解:y=Math.pow(x,5)+Math.pow(x,3)+6;

4)F=M\MlK

解:F=1.0*Ml*M2/(R*R);

5)sin(x)/ax+1co4;r?x/2)|

解:Math,sin(x)/a*x+Math,abs(Math,cos(*x/2));

6)0<a<10

解:a>0&&a<10

7)條件x=l與y=2有且只有一個(gè)成立.

解:(x=1&&y!=2)||(x!=1&&y==2)

2.4設(shè)在求以下表達(dá)式之前,整型變量a的值是4,試指出在求了以下表達(dá)式之

后,變量a、b和c的值。

I)〃=〃*〃++;

解:a=5;b=16;

2)C=++。+。;

解:a=5;c=10

2.6若一個(gè)數(shù)恰好等于它的因子之和,則這個(gè)數(shù)稱為“完全數(shù)”。編寫程序求

1000之內(nèi)的所有完全數(shù)。

分析:若一個(gè)自然數(shù),它所有的真因子(即除了自身以外的約數(shù))的和恰好等于它本身,

這種數(shù)叫做完全數(shù)?例如6=1+2+3;28=1+2+4+7+14

程序運(yùn)行結(jié)果:

3

Problems(a>Javadoc|Declaration里Console笈

〈terminated〉ChapterOl[JavaApplication]C:\ProgramFil

6的因子有:1+2+3

28的因子有:1+2+4+7+14

496的因子有:1+2+4+8+16+31+62+124+248

1OOO以內(nèi),完全數(shù)有:6.28,496

/**

*@author段智敏

*/

publicclassWork2_6{

publicstaticvoidmain(String[]args){

Stringresultstring="1000以內(nèi),完全數(shù)有:,〃最后結(jié)果字符串

for(inti=1;i<=1000;i++){

if(isPerfectNumber(i)){

resultstring+=i+”,n;

)

)

System.out.printin(resultstring);

)

privatestaticbooleanisPerfectNumber(intnumber){

intsum=0;//因子的和

Stringstr=newString(,,n);

for(inti=1;i<number;i++){

if(number%i==0){

sum+=i;

str+=i+

)

)

if(sum==number){//如果因子之和,等于本身,則是完數(shù)

str=str.substring(0,str.length()-1);//去掉字符串最后一,

個(gè)多余的''+〃;

System,out.printIn(number+”的因子有:"+str);

returntrue;

)

returnfalse;

}

}

2.7編寫輸入正實(shí)數(shù)x,求平方不超過(guò)x的最大整數(shù)n,并輸出。

程序運(yùn)行結(jié)果:

請(qǐng)輸入正實(shí)數(shù)X:51dad蟹3歲X:-“

限非法字部程序結(jié)束!II平方不超過(guò)3的最大整數(shù),n■1。,

請(qǐng)輸入正實(shí)數(shù)X:-4515

輸人的數(shù)不是正實(shí)數(shù),程序結(jié)束!??!

4

第一種命令行方式輸入

importjava.util.Scanner;

/**

*編寫輸入正實(shí)數(shù)x,求平方不超過(guò)x的最大整數(shù)n,并輸出。<BR>

*命令行方式,輸入正實(shí)數(shù),輸出結(jié)果<BR>

*@author段智敏

*/

publicclassWork2_7_l

(

publicstaticvoidmain(String[]args)

{

Scannerconsolescanner=newScanner(System.in);

System.out.print(”請(qǐng)輸入正實(shí)數(shù)X:n);

Stringstr=consolescanner.next();

intnumber=-1;

try

{

number=Integer.parselnt(str);

)

catch(NumberFormatExceptione)

{

System.out.println("輸入非法字符,程序結(jié)束?。?!”);

return;

}

if(number<1)

System.out.printin("輸入的數(shù)不是正實(shí)數(shù),程序結(jié)束?。?!”);

else

(

intn=(int)(Math.sqrt(number));

System.out.printIn("平方不超過(guò)"+number+”的最大整數(shù),n=H+n+

)

)

}

第二種窗II方式輸入

運(yùn)行結(jié)果如下圖:

/★*

*編寫輸入正實(shí)數(shù)X,求平方不超過(guò)X的最大整數(shù)n,并輸出。

*彈出窗口方式

*@author段智敏

*/

importjavax.swing.JOptionPane;

publicclassWork2_7_2

(

privateintnumber;

publicWork2_7_2()

(

number=this.getlntegerNumber(一■個(gè)正實(shí)數(shù)”,1);

if(number<1)

5

return;//非法,程序結(jié)束

intn=(int)(Math.sqrt(number));

showResuIt("平方不超過(guò)”+number+”的最大整數(shù)\1111="+n+";

)

/*★

*通過(guò)圖形界面,得到符合規(guī)則的正整數(shù)的方法

*@parammessage-在彈出的對(duì)話框中,顯示提示信息message

*@parammin-要求此數(shù)必須大于等于min

*/

publicintgetlntegerNumber(Stringmessage,intmin)

(

Stringstr=JOptionPane.showInputDialog(null,”請(qǐng)輸入一個(gè)正整數(shù)

“提示信息”,

JOptionPane.INFORMATION_MESSAGE);

intnumber=-1;

try

(

number=Integer.parselnt(str);//得至U輸入的正整數(shù)

)

catch(Exceptione)

(

JOptionPane.showMessageDialog(nullr”輸入非數(shù)字字符\n程序結(jié)束

”錯(cuò)誤警告”,

JOptionPane.ERROR_MESSAGE);

return-1;//輸入的不是數(shù)字字符,程序結(jié)束

)

if(number<min)

{

JOptionPane.showMessageDialog(nullr”輸入的數(shù)不符合規(guī)則,不是正

整數(shù)"程序結(jié)束”,

“錯(cuò)誤警告”,JOptionPane.ERROR_MESSAGE);

return-1;//輸入的藪不是大于2的正整數(shù)時(shí)候,程序結(jié)束

)

else

returnnumber;

}

/**

*彈出對(duì)話框,顯示結(jié)果

*@paramstr-需要顯示的字符串

*/

publicvoidshowResult(Stringstr)

(

JOptionPane.showMessageDialog(nullfstr,”輸出結(jié)果”,

JOptionPane.INFORMATION_MESSAGE);

)

publicstaticvoidmain(String[]args)

(

newWork2_7_2();

6

2.8輸入正整數(shù)n,輸出由n行n列星號(hào)字符組成的三角形圖案。

程序運(yùn)行結(jié)果:

請(qǐng)輸入正整數(shù)n:二

*

**

***

****

*****

******

源代碼文件:Work2_8.java

importjava.util.*;

/**

*輸入正整數(shù)n,輸出由n行n列星號(hào)字符組成的三角形圖案。

*@author段智敏

*/

publicclassWork2_8

(

publicstaticvoidmain(Stringargs[])

(

Scannerconsolescanner=newScanner(System.in);

System.out.print(“請(qǐng)輸入正整數(shù)n:;

Stringstr=consolescanner.next();

intn=-1;

try

{

n=Integer.parselnt(str);

)

catch(NumberFormatExceptione)

{

System.out.printin("輸入非法字符,程序結(jié)束!??!”);

return;

}

if(n<1)

System.out.printIn("輸入的數(shù)不是正實(shí)數(shù),程序結(jié)束?。?/p>

else

(

for(inti=0;i<n;i++)

(

for(intj=0;j<n-i-l;j++)

(

System.out.print(”H);

}

for(intk=0;k<i+l;k++)

(

System.out.print(H*");

}

System.out.printIn();

)

)

)

}

7

2.9設(shè)有整型變量x和y的值分別為5和110。試指出執(zhí)行了以下循環(huán)語(yǔ)句后,

變量x和y的值分別多少?

1)while(x<=y)x*=2;

解:x=160;y=110;

2)do{x=y/x;y=y-x;}whi1e(y>=1);

解:x=18;y=0;

2.10求小于999的所有水仙花數(shù)。

程序運(yùn)行結(jié)果:_

Problems@Javadoc圉Declaration曰Console漢口Properties

(terminated^ChapterOl[JavaApplication]C:\ProgramFiles\Java\jdkl.6.1

1000之前的所宥水仙花數(shù)有/p>

源代碼文件:Work2」0.java

/**

*求小于999的所有水仙花數(shù)

*@author段智敏

*/

publicclassWork2_10

(

publicstaticvoidmain(String[]args){

Stringresultstring=newString(”1000之前的所有水仙花數(shù)有:");//用

來(lái)存結(jié)果的字符串

for(inti=100;i<999;i++)

(

if(isNarcissusNumber(i))

resultstring+=”"+i;

)

System.out.printin(resultstring.substring(0,

resultstring.length()-1));

)

publicstaticbooleanisNarcissusNumber(intm)//判斷是否是水仙花數(shù)的

方法

(

intnumber=m;//把m存起來(lái)

inta[]=newint[100];//用來(lái)存n每個(gè)位上的數(shù)

intamount=0;//表示n的位數(shù)

while(m>0)//通過(guò)循環(huán)得到m每個(gè)位上的數(shù),存到數(shù)組中

{

a[amount]=m%10;

m=m/10;

amount++;

)

intsum=0;

for(intj=0;j<amount;j++)//累加每位上的數(shù)的位數(shù)次方

8

sum+=Math.pow(a[j],amount);

)

if(number==sum)//如果累加的和等于這個(gè)數(shù)本身,則他是水仙花數(shù),返回真

returntrue;

returnfalse;

)

2.11編程序解百雞問(wèn)題:雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一。

百錢買百雞。求雞翁、雞母和雞雛各幾何?

程序運(yùn)行結(jié)果:

雞翁:0;雞母:25;雞雛:75

雞翁:4;雞母:18;雞雛:78

雞翁:8;雞母:11;雞雛:81

雞翁:12;雞母:4;雞雛:84

源代碼文件:Work2」l.java

/**

*雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一。<BR>

*百錢買百雞。求雞翁、雞母和雞雛各幾何。<BR>

*@author段智敏

★/

publicclassWork2_ll

(

publicstaticvoidmain(Stringargs[])

(

for(inti=0;i<=100;i++)

(

for(intj=0;j<=100;j++)

(

for(intk=0;k<=100;k+=3)//雞雛的個(gè)數(shù)必須使3的倍

數(shù)

(

if<((5*i+3*j+k/3)==100)&&(i+j+k==100))

System,out.printIn(:n+i+n;雞母:"+j+H;

雞雛:”+k);

)

)

)

)

2.12編寫程序,按下面的公式計(jì)算自然對(duì)數(shù)底e的

值:e=l+l/l!+1/2!+1/3!+1/4!+.....

*按公式計(jì)算:e=l+l/l!+l/2!+l/3!+l/4!+.....

*@author段智敏

*/

publicclassWork2_12

(

publicstaticvoidmain(Stringargs[])

9

intn=1000;//計(jì)算精度

doublee=1.0;

for(inti=1;i<=n;i++)

{

e=e+1.0/Work2_12.factorial(i);

)

System.out.printIn(ne="+e);

)

/**

*計(jì)算階乘的靜態(tài)方法

*@param-需要計(jì)算階乘的數(shù)

*@return-最后結(jié)果

*/

staticdoublefactorial(inta)

(

doublef=1.0;

for(intj=1;j<=a;j++)

f=f*j;

returnf;

2.13編寫程序,用如下公式計(jì)算圓周率PI的近似值:PI=

4-4/3+4/5-4/7+4/9-4/11...

程序運(yùn)行結(jié)果:

計(jì)算1000000項(xiàng)后圓周率的近似值為3.1415936535907742

3.14是第629?0項(xiàng),值為:3.1400002979112887

3.141是第1689?0項(xiàng),值為:3,141000236580159

3.1415是第10795?0項(xiàng),值為:3,1415000095284658

3.14159是第376851?0項(xiàng),值為:3.1415900000140544

源代碼文件:Work2_13.java

*圓周率計(jì)算

*@author段智敏

publicclassWork2_13

publicstaticvoidmain(Stringargs[])

intnum=1000000;//控制計(jì)算的項(xiàng)數(shù),越高,越準(zhǔn)確

System.out.println(”用公式計(jì)算圓周率,\n計(jì)算”+num+”項(xiàng)后圓周率的

近似值為“

+Work2_13.getPai(num));

System.out.printIn(n3.14+Work2_13.getlndex(3.14)+“項(xiàng),

\t\t值為:”

+Work2_13.getPai(Work2_13.getlndex(3.14)));

System,out.printin(n3.141+Work2_13.getlncfex(3.141)+“項(xiàng),

\t值為:”

+Work2_13.getPai(Work2_13.getlndex(3.141)));

System.out.println("3.1415是第"+Work2_13.getlndex(3.1415)+”

10

項(xiàng),\t值為:”

+Work2_13.getPai(Work2_13.getlndex(3.1415)));

System,out.println("3.14159是第”+Work2_13.getlndex(3.14159)+

”項(xiàng),\t值為

+Work2_13.getPai(Work2_13.getlndex(3.14159)));

/**

*根據(jù)給出的數(shù)值,得到需要計(jì)算多少項(xiàng)才能得到這個(gè)數(shù)值

*

*@param9-數(shù)值

*@return一項(xiàng)數(shù)

*/

publicstaticdoublegetlndex(doublep)

(

intr=1,num=1000000;//控制計(jì)算的項(xiàng)數(shù),越高,越準(zhǔn)確

doublei=1.0,pai=0?0,t=1.0;

while(r<num)

{

pai=pai+(4.0/i)*t;

t=-t;

i=i+2;

r++;

if(pai>=p&&pai<=(p+0.000001))

break;

)

returnr;

)

/**

*根據(jù)給出的數(shù),按公式進(jìn)行計(jì)算圓周率

*@paramnum-公式項(xiàng)數(shù)

*@return返回按公式計(jì)算出的圓周率

*/

publicstaticdoublegetPai(doublenum)

(

intr=1;

doublei=1.0,pai=0?0,t=1.0;

while(r<num)

{

pai=pai+(4.0/i)*t;

t=-t;

i=i+2;

r++;

)

returnpai;

2.14回文整數(shù)是指正讀法和反讀相同的整數(shù),編寫一個(gè)程序,輸入一個(gè)整數(shù),

判斷他是否為回文整數(shù)。

程序運(yùn)行結(jié)果:

11

importjavax.swing.JOptionPane;

/*★

*輸入整數(shù),判斷是否是回文整數(shù)

*@author段智敏

*/

publicclassWork2_14

(

privateintnumber;

publicWork2_14()

(

number=get工ntegerNumber("輸入一個(gè)正整數(shù)n",1);//要求是〉=1的整數(shù)

if(number<0)

return;

if(isPalindrome(number))

showResult("輸入的正整數(shù)+number+”〃是回文數(shù)”);

else

showResult("輸入的正整數(shù)+number+”〃不是回文數(shù)”);

}

/*★

*判斷是否是回文數(shù)

*@paramnumber-需要判斷的正整數(shù)

*@return是回文數(shù)返回真,否則返回假

*/

publicbooleanisPalindrome(intnumber)

(

inta[]=newint[100];

inti=0;

inttest=number;

while(test>0)//把整數(shù)的各個(gè)位上的數(shù)存到數(shù)組里

(

a[i]=test%10;

test=test/10;

i++;//累計(jì)整數(shù)位數(shù)

)

for(intj=0;j<i;j++)

(

if(a[j]!=a[i-j-1])//有對(duì)應(yīng)不相等的,肯定不是,宜接跳出并附

給b為false

(

returnfalse;

}

}

returntrue;//如果一直相等,則if里邊的語(yǔ)句不能被執(zhí)行b的值是true

)

/**

*通過(guò)圖形界面,得到符合規(guī)則的正整數(shù)的方法

*@parammessage-在彈出的對(duì)話框中,顯示提示信息message

*@parammin-要求此數(shù)必須大于等于min

*@return返回符合規(guī)則的整數(shù)

*/

12

publicintgetlntegerNumber(Stringmessage,intmin)

(

Stringstr=JOptionPane.showInputDialog(nullrmessage,“提示信

息”,

JOptionPane.INFORMATION_MESSAGE);

intnumber=-1;

try

(

number=Integer.parselnt(str);//得至U輸入的正整數(shù)

)

catch(Exceptione)

(

JOptionPane.showMessageDialog(nullr”輸入非數(shù)字字符\n程序結(jié)束

“錯(cuò)誤警告”,

JOptionPane.ERROR_MESSAGE);

return-1;//輸入的不是數(shù)學(xué)字符,程序結(jié)束

)

if(number<min)

(

JOptionPane.showMessageDialog(nullr”輸入的數(shù)不符合規(guī)則,不是正

整數(shù)\n程序結(jié)束”,

"錯(cuò)誤警告",JOptionPane.ERROR_MESSAGE);

return-1;//輸入的數(shù)不是大于2的正:整數(shù)時(shí)候,程序結(jié)束

)

else

returnnumber;

}

/**

*彈出對(duì)話框,顯示結(jié)果

*@paramstr-需要顯示的字符串

*/

publicvoidshowResult(Stringstr)

(

JOptionPane.showMessageDialog(null,str,“輸出結(jié)果”,

JOptionPane.INFORMATION_MESSAGE);

)

publicstaticvoidmain(Stringargs[])

{

newWork2_14();

)

2.15草地上有一堆野果,有一只猴子每天吃掉這堆野果的一半又一個(gè),5天后

剛好吃完這堆野果,求這堆野果原來(lái)共有多少個(gè)?猴子每天吃多少個(gè)野果?

程序運(yùn)行結(jié)果:

這堆野果原來(lái)共有62個(gè)

第1天吃32個(gè)

第2天吃16個(gè)

第3天吃8個(gè)

第4天吃4個(gè)

第5天吃2個(gè)

源代碼文件:Work215.java

*猴子吃蘋果問(wèn)題

*@author段智敏

13

publicclassWork2_15

(

publicstaticvoidmain(Stringargs[])

{

intizjztest=1;

for(i=1;i<100000;i++)

(

test=i;

for(j=0;j<5;j++)//5天

(

test=test/2-1;

)

if(test==0)//5天后野果子數(shù)量為0,則滿足要求

{

System,out.printin(”這堆野果原來(lái)共有“+i+“個(gè)”);

break;

)

)

//打印出猴子每天吃野果子的個(gè)數(shù)

inteat;

test=i;

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

(

eat=test/2+1;

test=test/2-1;

System.out.printIn+j+"天吃"+eat+"個(gè)

)

14

第三章面向?qū)ο缶幊袒A(chǔ)

3.1什么是面向?qū)ο蠹夹g(shù)?它有什么優(yōu)點(diǎn)?

答:面向?qū)ο蠹夹g(shù)強(qiáng)調(diào)在軟件開(kāi)發(fā)過(guò)程中面向客觀世界或問(wèn)題域中的事物,采用人類在

認(rèn)識(shí)客觀世界的過(guò)程中普遍運(yùn)用的思維方法,直觀、自然地描述客觀世界中的有關(guān)事物。面

向?qū)ο蠹夹g(shù)的基本特征主要有抽象性、封裝性、繼承性和多態(tài)性。

3.2面向?qū)ο蟪绦蛟O(shè)計(jì)與面向過(guò)程程序設(shè)計(jì)有什么區(qū)別?

答:面向過(guò)程程序設(shè)計(jì)關(guān)注的是函數(shù)功能的實(shí)現(xiàn);面向?qū)ο蟪绦蛟O(shè)計(jì)關(guān)注將函數(shù)和數(shù)據(jù)

如何綁定到一個(gè)對(duì)象,通過(guò)對(duì)象的描述、對(duì)象間的關(guān)系、類的管理實(shí)現(xiàn)程序的功能。

3.3程序中類和對(duì)象有什么區(qū)別?

答:類是一組對(duì)象共性的集合。類具有行為,它描述一個(gè)對(duì)象能夠做什么以及做的方法,

它們是可以對(duì)這個(gè)對(duì)象進(jìn)行操作的程序和過(guò)程。

對(duì)象是類的一個(gè)實(shí)例,它代表一個(gè)現(xiàn)實(shí)物理“事件”。

3.4類變量和實(shí)例變量,以及類方法和實(shí)例方法的區(qū)別。

加載類之前創(chuàng)建對(duì)象之后調(diào)用方法訪問(wèn)權(quán)限

成各個(gè)對(duì)象之間各自分對(duì)象名.實(shí)例變量被實(shí)例方法,構(gòu)造方

實(shí)例變量不分配內(nèi)存

員配獨(dú)立的內(nèi)存空間名法訪問(wèn)

變各個(gè)對(duì)象之間共享這對(duì)象名?類變量名;被實(shí)例方法,類方

類變量直接分配內(nèi)存

量段已經(jīng)分配完的內(nèi)存類名?類變量名法,構(gòu)造方法訪問(wèn)

對(duì)象名.實(shí)例方法實(shí)例變量、類變量,

成實(shí)例方法不分配入口地址共享一個(gè)入口地址

名實(shí)例方法、類方法

方直接分配入口地對(duì)象名.類方法名;

法類方法共享這個(gè)入口地址類變量、類方法

址類名?類方法名

3.5子類能繼承超類的哪些成員變量和方法?

同包繼承不同包繼承(import進(jìn)來(lái)的)

私有(private)不繼承不繼承

友好(缺省默認(rèn))繼承不繼承

受保護(hù)(protected)繼承繼承

共有(public)繼承繼承

15

3.6子類在什么情況下能隱藏超類的成員變量和方法?

解:子類重載父類的成員變量、方法時(shí)候。

3.7在子類中是否允許有一個(gè)方法和超類的方法名字相同,而類型不同?

解:不允許。方法重寫是指:子類中定義一個(gè)方法,并且這個(gè)方法的名字、返回類型、

參數(shù)個(gè)數(shù)、和類型與從父類繼承的方法完全相同。

3.12以下程序有什么錯(cuò)誤?

解:類方法main。調(diào)用了類的實(shí)例變量,main方法是類方法,不能調(diào)用類的實(shí)例變量

a,導(dǎo)致錯(cuò)誤!

3.13聲明一個(gè)復(fù)數(shù)類Complex。實(shí)現(xiàn)其基本功能。

復(fù)數(shù)類:Complex.java

**

*復(fù)數(shù)類

*@author段智敏

publicclassComplex

privatedoublereal;//real為實(shí)部

privatedoubleimage;//image為虛部

publicComplex()

(

real=Double.NaN;

image=Double.NaN;

)

*構(gòu)造方法

*@paramreal-實(shí)部

*@paramimage-虛部

*/

publicComplex(doublereal,doubleimage)

{

this.real=real;

this.image=image;

)

/**

*取復(fù)數(shù)實(shí)部

*@return-返回復(fù)數(shù)的實(shí)部

*/

publicdoublegetReal()

(

returnreal;

)

/*★

*設(shè)置曳數(shù)的實(shí)部

*@paramreal-實(shí)部

publicvoidsetReal(doublereal)

this.realreal;

16

}

/**

*取復(fù)數(shù)的虛部

*@return-返回復(fù)數(shù)的虛部

*/

publicdoublegetlmage()

(

returnthis.image;

)

/**

*設(shè)置復(fù)數(shù)的虛部

*@paramimage-虛部

*/

publicvoidsetimage(doubleimage)

(

this.image=image;

)

/**

*設(shè)置實(shí)虛部

*@paramreal-實(shí)部

*@paramimage-虛部

*/

publicvoidsetComplex(doublereal,doubleimage)

{

this.real=real;

this.image=image;

*返回該復(fù)數(shù)的字符串表示。

*@return-該復(fù)數(shù)的字符串表示形式。

*/

publicStringtoString()

{

if(real==Double.NaN&&image==Double.NaN)

returnnH;

else

(

Stringresult=newString(this.real+((image>0)?"+

vin)

+((image!=0)?this.image+"i":""));

returnresult;

)

}

/**

*復(fù)數(shù)加法,

*@paramval-另一個(gè)復(fù)數(shù)

*@return-當(dāng)前復(fù)數(shù)對(duì)象與參數(shù)指定的復(fù)數(shù)對(duì)象的和

*/

publicComplexadd(Complexval)

{

Complexresult=newComplex(this.real+val.getReal(),

this.image+val.getlmage());

returnresult;

)

/**

*復(fù)數(shù)減法,當(dāng)前對(duì)象減去參數(shù)對(duì)象

*@paramval-另一個(gè)復(fù)數(shù)

*@return-當(dāng)前復(fù)數(shù)對(duì)象與參數(shù)指定的復(fù)數(shù)對(duì)象的差

17

publicComplexsubtract(Complexval)//,返Pl,

{

Complexresult=newComplex(this.real-val.getReal()r

this.image-val.getlmage());

returnresult;

)

/**

*復(fù)數(shù)乘法

*@paramval-另一個(gè)復(fù)數(shù)

*@return-當(dāng)前復(fù)數(shù)對(duì)象與參數(shù)指定的復(fù)數(shù)對(duì)象的積

★/

publicComplexmultiply(Complexval)

(

Complexresult=newComplex();

result.setReal(this.real*val.getReal()-this.image*

val.getlmage());

result.setimage(this.real*val.getlmage()+this.image*

val.getReal());

returnresult;

*復(fù)數(shù)除法

*@paramval-另一個(gè)復(fù)數(shù)

*@return-當(dāng)前復(fù)數(shù)對(duì)象與參數(shù)指定的復(fù)數(shù)對(duì)象的商

*/

publicComplexdivide(Complexval)

{

Complexresult=newComplex();

result.setReal((this.real★val.getReal()+this.image*

val.getlmage())

/(val.getReal()*val.getReal()+val.getlmage()*

val.getlmage()));

result.setImage((this.image*val.getReal()-this.real*

val.getlmage())

/(val.getReal()*val.getReal()+val.getlmage()*

val.getlmage()));

returnresult;

復(fù)數(shù)測(cè)試類:TestComplex.java

.序運(yùn)行結(jié)果:

復(fù)數(shù)1:2.0+4.01;實(shí)部2.0;虛部4.0

復(fù)數(shù)2:3.0-1.01;實(shí)部3.0;虛部-1.0

復(fù)數(shù):2.0+4.01與復(fù)數(shù):3.0-1.01之和為:5.0+3.01

復(fù)數(shù):2.0+4.0i與復(fù)數(shù):3.0-1.0i之差為:-1.0+5.01

復(fù)數(shù):2.0+4.Cli與復(fù)數(shù):3.0-1.01的乘積為:10.0+10.0i

復(fù)數(shù):2.0+4.0i與復(fù)數(shù):3.0-1.01的商為:0.2+1.41

/**

*復(fù)數(shù)測(cè)試類

*@author段智敏

*

*/

publicclassTestComplex

(

publicstaticvoidmain(String[]args)

18

Complexcomplexl=newComplex(2Z4);

Complexcomplex2=newComplex(3,-1);

Complexresult=newComplex();

System.out.printIn1:”+complexl.toString()+”;實(shí)部”+

complexl.getReal()+'*;虛部”

+complexl.getlmage());

System.out.printIn(n2:”+complex2.toString()+n;實(shí)部”+

complex2.getReal()+n;虛部”

+complex2.getlmage());

result=complexl.add(complex2);//兩個(gè)復(fù)數(shù)之和

System,out?println("復(fù)數(shù):"+complexl.toString()+“與“+"復(fù)數(shù):

+complex2.toString()

+”之和為:"+result.toString());

result=complexl.subtract(complex2);//兩個(gè)笑數(shù)之差

System.out.printIn”+complexl.toString()+“與“+"復(fù)數(shù):

+complex2.toString()

+”之差為:n+result.toString());

result=complexl.multiply(complex2);//兩個(gè)復(fù)數(shù)乘積

System.out.printIn”+complexl.toString()+“與“+”復(fù)數(shù):

+complex2.toString()

+”的乘積為:”+result.toString(

溫馨提示

  • 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)論