《Java語言程序設(shè)計(jì)(一)》課后習(xí)題答案全集_第1頁
《Java語言程序設(shè)計(jì)(一)》課后習(xí)題答案全集_第2頁
《Java語言程序設(shè)計(jì)(一)》課后習(xí)題答案全集_第3頁
《Java語言程序設(shè)計(jì)(一)》課后習(xí)題答案全集_第4頁
《Java語言程序設(shè)計(jì)(一)》課后習(xí)題答案全集_第5頁
已閱讀5頁,還剩122頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

(2)編譯和解釋;

(3)自動無用內(nèi)存回收功能;

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

(5)與平臺無關(guān);

(6)安全性;

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

(8)多線程;

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

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

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

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

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

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

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

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

解釋執(zhí)行。

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

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

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

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

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

文件的public類同名。

1.6JAVA語言使用什么字符集?共有多少個不同的字符?

答:Java語言使用Unicode字符集,共有65535個字符。

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

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

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

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

(4)長度不能超過255個字符

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

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

邏輯

布爾型boolean1falsefalse,truefalse,true

類型

字符型char20a,我,泛0?65535

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

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

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

長整型long8OL12L,13L,45L-2E63?2E63-1

-10E38?-10E-38

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

浮點(diǎn)I0E-38?10E38

類型-10E308?-10E-308

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

10E-308?10E308

1.9指出下列內(nèi)容哪些是JAVA語言的整型常量,哪些是浮點(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)算和語句

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

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

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

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

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

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

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

1)V=(4/3)…3

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

2)一=1/“居+1//f2)

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

3)y=x,+/+6

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

4)F=M、*M』R2

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

5)sin(x)/〃x+1cos(i?九/2)l

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

6)0<a<10

解:a>0&&a<10

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

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

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

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

1)〃=。*。++;

解:a=5;b=16;

2)C=++〃+。;.

解:a=5;c=10

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

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

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

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

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

3

良Problemsi@Javadoc|匾Declaration后Console漢

〈terminated〉ChapterOl[JavaApplication]C:\PrograjnFil

6的因子有:1+2+3

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

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

1000以內(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(isPerfeetNumber(i)){

resultstring+=i+",n;

}

}

System.out.printIn(resultString);

)

privatestaticbooleanisPerfectNumber(intnumber){

intsum=0;//因子的和

Stringstr=newString(nn);

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

if(number%i==0){

sum+=i;

str+=i+"+”;

}

)

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

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

個多余的''+〃;

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

returntrue;

)

returnfalse;

}

)

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

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

請輸入正實(shí)數(shù)X:101

請輸入正實(shí)數(shù)X:51dad

輸入非法字符,程序結(jié)束?。?!平方不超過的最大整數(shù),n=10;

請輸入正實(shí)數(shù)X:T515

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

4

第一種命令行方式輸入

importjava.util.Scanner;

/**

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

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

*@author段智敏

*/

publicclassWork2_7_l

(

publicstaticvoidmain(String[]args)

{

ScannerconsoleScanner=newScanner(System.in);

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

Stringstr=consolescanner.next();

intnumber=-1;

try

{

number=Integer.parselnt(str);

)

catch(NumberFormatExceptione)

(

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

return;

)

if(number<1)

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

else

{

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

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

)

)

}

第二種窗口方式輸入

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

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

彈出窗口方式

?author段智敏

importjavax.swing.JOptionPane;

publicclassWork2_7_2

{

privateintnumber;

publicWork2_7_2()

{

number=this.getIntegerNumber(ni-n?iwA一1個正實(shí)數(shù)”,1);

if(number<1)

5

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

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

showR一suit("平方不超過”+number+”的最大整數(shù)\nn="+n+”;*');

)

/**

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

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

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

*/

publicintgetIntegerNumber(Stringmessage,intmin)

(

Stringstr=JOptionPane.showInputDialog(null,”請輸入.個正整數(shù)

“提示信息”,

JOptionPane.INFORMATION_MESSAGE);

intnumber=-1;

try

(

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

)

catch(Exceptione)

(

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

“,“錯誤警告”,

JOptionPane.ERROR_MESSAGE);

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

)

if(number<min)

(

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

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

“錯誤警告",JOptionPane.ERROR_MESSAGE);

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

)

else

returnnumber;

)

/**

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

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

*/

publicvoidshowResult(Stringstr)

{

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

JOptionPane.INFORMATION_MESSAGE);

)

publicstaticvoidmain(String[]args)

(

newWork2_7_2();

)

6

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

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

請輸入正整數(shù)n:N

*

**

****

*****

******

源代碼文件:Work2_8.java

importjava.util.*;

/**

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

*@author段智敏

*/

publicclassWork2_8

(

publicstaticvoidmain(Stringargs[])

{

ScannerconsoleScanner=newScanner(System.in);

System.out.print(”請輸入正整數(shù)n: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ù)不是1E實(shí)數(shù),程序結(jié)束!??!”);

else

(

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

(

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

{

System.out.print(n");

)

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

{

System.out.print(“*");

}

System.out.printin();

}

)

)

}

7

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

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

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

解:x=160;y=110;

2)do{x=y/x;y=y-x;}while(y>=l);

解:x=18;y=0;

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

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

LProblems@JavadocDeclaration曰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ù)有:");//用

來存結(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存起來

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

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

while(m>0)//通過循環(huán)得到m每個位上的數(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]zamount);

)

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

returntrue;

returnfalse;

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

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

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

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

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

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

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

源代碼文件:Work2_ll.java

/★*

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

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

*@author段智敏

*/

publicclassWork2_l1

(

publicstaticvoidmain(Stringargs[])

{

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

(

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

(

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

數(shù)

(

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

System,out.println(“雞翁:"+i+雞母:”+j+”;

雞雛:”+k);

)

}

)

)

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

值:e=l+l/l!+l/2!+l/3!+l/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

Tp為

3.14是第629.0項(xiàng),jT3.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.getIndex(3.14)+”項(xiàng),

\t\t值為:n

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

System,out.printin(”3.141是第”+Work2_13.getTndex(3.141)+“項(xiàng),

\t值為:”

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

System.out.println(H3.1415是第"+Work2_13.getIndex(3.1415)+”

10

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

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

System,out:.printin(”3.14159是第”+Work2_13.getIndex(3.14159)+

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

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

/**

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

*

*@param量-數(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>=宜&&pai<=(直+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ù),編寫一個程序,輸入一個整數(shù),

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

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

11

importjavax.swing.JOptionPane;

/**

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

*@author段智敏

*/

publicclassWork2_14

(

privateintnumber;

publicWork2_14()

(

number=get工nt一g一:rNumb一r("輸入——個正整數(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ù)的各個位上的數(shù)存到數(shù)組里

{

a[i]=test%10;

test=test/10;

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

)

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

{

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

給b為false

(

returnfalse;

}

)

returntrue;//如果-iT.相等,則if巾邊的語句不能被執(zhí)彳Jb的值是true

)

/**

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

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

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

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

*/

12

publicintgetIntegerNumber(Stringmessage,intmin)

(

Stringstr=JOptionPane.showInputDialog(null,message,”提示信

息”,

JOptionPane.INFORMATION_MESSAGE);

intnumber=-1;

try

(

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

}

catch(Exceptione)

(

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

”,“錯誤警告”,

JOptionPane.ERROR_MESSAGE);

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

)

if(number<min)

(

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

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

“錯誤警告”,JOptionPan一.EKROR_MESSAGE);

return-1;//輸入的數(shù)不是大「2的小整經(jīng)時候,程不結(jié)束

)

else

returnnumber;

)

/**

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

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

*/

publicvoidshowResult(Stringstr)

{

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

JOptionPane.INFORMATION_MESSAGE);

)

publicstaticvoidmain(Stringargs[])

{

newWork2_14();

)

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

剛好吃完這堆野果,求這堆野果原來共有多少個?猴子每天吃多少個野果?

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

這堆野果原來共有62個

第1天吃32個

第2天吃16個

第3天吃8個

第4天吃4個

第5天吃2個

源代碼文件:Work2_15.java

*猴子吃蘋果問題

*@author段智敏

13

publicclassWork2_15

(

publicstaticvoidmain(Stringargs[])

{

inti,j,test=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.println("這堆野果原來共有“+i+"個");

break;

}

)

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

inteat;

test=i;

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

{

eat=test/2+1;

test=test/2-1;

System.out.printIn(n?n+j+"天吃”+eat+"個

)

14

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

直接分配入口地對象名.類方法名;

法類方法共享這個入口地址類變量、類方法

址類名?類方法名

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

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

私有(private)不繼承不繼承

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

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

共有(public)繼承繼承

15

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

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

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

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

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

3.12以下程序有什么錯誤?

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

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

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

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

/**

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

*Qauthor段智敏

*/

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è)置復(fù)數(shù)的實(shí)部

*@paramreal-實(shí)部

★/

publicvoidsetReal(doublereal)

this.real=real;

16

)

/火*

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

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

*/

publicdoublegetImage()

{

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)

return”“;

else

(

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

ffU)

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

returnresult;

)

}

/**

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

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

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

*/

publicComplexadd(Complexval)

(

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

this.image+val.getImage());

returnresult;

)

/**

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

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

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

17

*/

publicComplexsubtract(Complexval)//,返怛I,

{

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

this.image-val.getImage());

returnresult;

)

/**

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

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

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

*/

publicComplexmultiply(Complexval)

(

Complexresult=newComplex();

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

val.getImage());

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

val.getReal());

returnresult;

)

/**

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

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

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

*/

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ù)測試類:TestComplex.java

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

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

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

,復(fù)數(shù):2.0+4.0i與復(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.0i與復(fù)數(shù):3.0-l.Oi的乘積為:10.0+10.0i

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

/★★

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

*^author段智敏

publicclassTestComplex

(

publicstaticvoidmain(String[]args)

18

Complexcomplexl=newComplex(2Z4);

Complexconiplex2=newComplex(3,-1);

Complexresult=newComplex();

System,out.printin(1:+complexl.toString()實(shí)部“+

complexl.getReal()+";虛部”

+complexl.getlmage());

System,out.printIn(2:+complex2.toString()實(shí)部”+

complex2.getReal()+”;虛部”

+complex2.getlmage());

result=complexl.add(complex2);//

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論