版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省寧波市鎮(zhèn)海區(qū)立人中學(xué)2019-2020學(xué)年八年級(jí)下學(xué)期期中物理試題【含答案、解析】
- 數(shù)據(jù)結(jié)構(gòu)試題庫(kù)及答案
- 2025年滬科新版二年級(jí)語(yǔ)文下冊(cè)月考試卷
- 2025年滬教新版選修1生物上冊(cè)月考試卷含答案
- 2025年滬教版八年級(jí)歷史上冊(cè)月考試卷含答案
- 2025年粵教滬科版選修6歷史上冊(cè)月考試卷
- 2025年度企業(yè)催告函模板制作合同3篇
- 個(gè)人與個(gè)人之間2024年度專利許可合同3篇
- 二零二五農(nóng)機(jī)零部件進(jìn)口代理合同3篇
- 抵押物合同(2篇)
- 2025-2030年中國(guó)陶瓷電容器行業(yè)運(yùn)營(yíng)狀況與發(fā)展前景分析報(bào)告
- 2025年山西國(guó)際能源集團(tuán)限公司所屬企業(yè)招聘43人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 二零二五年倉(cāng)儲(chǔ)配送中心物業(yè)管理與優(yōu)化升級(jí)合同3篇
- 2025屆廈門高三1月質(zhì)檢期末聯(lián)考數(shù)學(xué)答案
- 音樂(lè)作品錄制許可
- 江蘇省無(wú)錫市2023-2024學(xué)年高三上學(xué)期期終教學(xué)質(zhì)量調(diào)研測(cè)試語(yǔ)文試題(解析版)
- 拉薩市2025屆高三第一次聯(lián)考(一模)英語(yǔ)試卷(含答案解析)
- 開(kāi)題報(bào)告:AIGC背景下大學(xué)英語(yǔ)教學(xué)設(shè)計(jì)重構(gòu)研究
- 師德標(biāo)兵先進(jìn)事跡材料師德標(biāo)兵個(gè)人主要事跡
- 連鎖商務(wù)酒店述職報(bào)告
- 2024年山東省煙臺(tái)市初中學(xué)業(yè)水平考試地理試卷含答案
評(píng)論
0/150
提交評(píng)論