最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

基于《java2實用教程》的java知識點(diǎn)復(fù)習(xí)整理【 歸納總結(jié)篇】

2023-05-24 11:36 作者:歡喜y1  | 我要投稿

第1章?Java入門

1. 開發(fā)與運(yùn)行Java程序需要經(jīng)過哪些主要步驟和過程?

答:(1)編寫Java源文件:使用文本編輯器(Edit或記事本),拓展名為.java

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

(3)運(yùn)行Java程序:Java應(yīng)用程序使用Java解釋器(java.exe)執(zhí)行字節(jié)碼文件;

Java小應(yīng)用程序使用支持Java標(biāo)準(zhǔn)的瀏覽器來執(zhí)行。

2. 怎樣區(qū)分應(yīng)用程序和小應(yīng)用程序?應(yīng)用程序的主類或小應(yīng)用程序的主類必須用public修飾嗎?

答:?①應(yīng)用程序必須有main方法,這個方法是程序執(zhí)行的入口。

小應(yīng)用程序沒有main方法。

②應(yīng)用程序的主類不一定用public修飾;小應(yīng)用程序的主類必須用public修飾。

3. Java程序是由什么組成的?一個程序中必須要有public類嗎?Java源文件的命名規(guī)則是怎樣的?

答:?①Java程序由類組成。

②應(yīng)用程序可以沒有public類;小應(yīng)用程序一定有一個類是public類(主類)。

③應(yīng)用程序:如果只有一個類,源文件名與該類的類名相同,拓展名為.java;

有多個類時,如果有public類(最多一個),源文件名與public類的類

名相同,拓展名是.java;沒有public類,源文件名與任何一個類的類名

相同即可,拓展名為.java。

小應(yīng)用程序:源文件名與主類的類名相同,拓展名是.java。

4. 在運(yùn)行小程序的HTML文件中可以使用codebase屬性指定小程序的字節(jié)碼所駐留的目錄。如果不使用codebase屬性,小程序的字節(jié)碼文件必須和運(yùn)行它的HTML文件在同一目錄中。編寫一個小程序并將小程序的字節(jié)碼存放在某個目錄中,比如C:\5000;把運(yùn)行該小程序的HTML文件(注意其中的codebase屬性):

<applet code=你的小程序的字節(jié)碼?width=200 height=300 codebase=C:\5000>

</applet>

存放在另一個目錄中。

答:?以書中小應(yīng)用程序為例進(jìn)行說明:

①編寫Java小應(yīng)用程序源代碼

import java.applet.*;

import java.awt.*;

public class Boy extends Applet

{

public void paint(Graphics g)

{

g.setColor(Color.red);

g.drawString("我一邊喝著咖啡,一邊學(xué)Java呢",5,30);

g.setColor(Color.blue);

g.drawString("我學(xué)得很認(rèn)真",10,50);

}

}

②將上述代碼命名為Boy.java并進(jìn)行編譯得到Boy.class字節(jié)碼文件;將得到的字節(jié)碼文件存放在

?

C:\5000文件夾下;

③編寫小應(yīng)用程序的HTML源文件:

<applet code=Boy.class wdith=200 height=300 codebase=C:\5000> </applet>

④將上述編寫好的代碼命名為Boy.html;并將此文件存放在C:\5000文件夾以外的任意一個文件夾中(如C:\1000);

⑤運(yùn)行Boy.html。

第2章?標(biāo)識符、關(guān)鍵字和數(shù)據(jù)類型

1. 什么叫標(biāo)識符?標(biāo)識符的規(guī)則是什么?

答:①用來標(biāo)識類名、變量名、、方法名、類型名、數(shù)組名、文件名的有效字符序列。

②由字母、下劃線、美元符號和數(shù)字組成,并且第一個字符不能是數(shù)字字符,而且關(guān)鍵字不能作為標(biāo)識符。

2. 什么叫關(guān)鍵字?請說出5個關(guān)鍵字。

答:①Java語言中已經(jīng)被賦予特定意義的一些單詞。

②class break public return static extends等。

3. Java的基本數(shù)據(jù)類型都是什么?

答:boolean(邏輯型) char(字符型) float、double(浮點(diǎn)型) byte、short、int、long(整型)。

4. 下列哪些語句是錯誤的:

int x = 8;

byte b = 127;

b = x;

答:b=x語句錯誤;原因是高級別的變量賦值給低級別的變量時,一定要用顯式轉(zhuǎn)換即b=(byte)x; 。

5. 下列程序的輸出結(jié)果是什么?

public class E

{

public static void main(String args[])

{

long[] a={1,2,3,4};

long[] b={100,200,300,400,500};

b=a;

System.out.println("數(shù)組b的長度:"+b.length);

System.out.println("b[0]="+b[0]);

}

}

答: 數(shù)組b的長度:4

b[0]=1

7. System.out.println(“你好”);可輸出字符串,也可以使用System.out.println( )輸出變量或表達(dá)式的值,只需使用并置符號“+”將變量、表達(dá)式或一個常數(shù)值與一個字符串并置即可,如: System.out.println(“?”+x);System.out.println(“:”+123+“大于”+122);等。上機(jī)調(diào)試下列程序,注意觀察結(jié)果,特別注意System.out.print( )和System.out.println( )的區(qū)別。

public class OutputData

{

public static void main(String args[])

{

int x=234,y=432;

System.out.println(x+"<"+(2*x));

System.out.print("我輸出結(jié)果后不回車");

System.out.println("我輸出結(jié)果后自動回車到下一行");

System.out.println("x+y= "+(x+y));

System.out.println(" "+x+y+"=234432");

}

}

答: 234<468

我輸出結(jié)果后不回車我輸出結(jié)果后自動回車到下一行

x+y= 666

234432=234432

8.一個簡單的JAVA程序

答:

public class E

{

???public static void main(String args[])

???{System .out .println("這是我的第一個程序");}

}

編寫一個Java應(yīng)用程序,輸出全部的希臘字母。

public class Hello {

public static void main(String[] args) {

char a='α',b='ω';

System.out.print("全部的希臘字母為:");

for(;a<=b;a++) {

System.out.print(a+" ");

}

}

}

?

第3章?運(yùn)算符、表達(dá)式和語句

1. 下列程序的輸出結(jié)果是什么?

public class E

{

public static void main(String args[])

{

char x='你',y='e',z='吃';

if(x>'A')

{

y='愛';

z='情';

}

else

y='我';

z='她';

System.out.println(" "+x+y+z);

}

}

答: 你愛她

2. 下列程序的輸出結(jié)果是什么?

public class E3

{

public static void main(String args[])

{

char c='\0';

for(int i=1;i<=4;i++)

{

switch(i)

{

case 1:c='b';

System.out.print(c);

case 2:c='e';

System.out.print(c);

break;

case 3:c='p';

System.out.print(c);

default:

System.out.print("!");

}

}

}

}

答:beep?。?/span>

3. 編寫應(yīng)用程序,求1!+2!+…+10!。

答:

class Fact

{

public static void main(String args[])

{

int fact,sum=0;

for(int i=1;i<=10;i++)

{

fact=1;

for(int j=1;j<=i;j++)

fact*=j;

sum+=fact;

}

System.out.println("1到10的階乘之和是:"+sum);

}

}

4. 編寫一個應(yīng)用程序,求100以內(nèi)的全部素數(shù)。

答:

class Primes

{

public static void main(String args[])

{

int w=1;

for(int i=2;i<=100;i++)

{

for(int j=2;j<i;j++)

{

w=i%j;

if(w==0)

break;

}

if(w!=0)

System.out.println(i+"是素數(shù)");

}

}

}

5. 分別用do―while和for循環(huán)計算1+1/2!+1/3!+1/4!+…的前20項和。

答: ①for循環(huán)

class Sum

{

public static void main(String args[])

{

int fact;

double sum=0;

for(int i=1;i<=20;i++)

{

fact=1;

for(int j=1;j<=i;j++)

fact*=j;

sum+=1.0/fact;

}

System.out.println(sum);

}

}

②do―while循環(huán)

class Sum

{

public static void main(String args[])

{

int i=1;

int fact;

double sum=0;

do

{

fact=1;

int j=0;

while(++j<=i)

fact*=j;

sum+=1.0/fact;

}

while(++i<=20);

System.out.println(sum);

}

}

6. 一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為“完數(shù)”。編寫應(yīng)用程序,求1000之內(nèi)的所有完數(shù)。

答:

class Wanshu

{

public static void main(String args[])

{

int x,i,sum;

for(x=1;x<=1000;x++)

{

sum=0;

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

{

if(x%i==0)

sum+=i;

}

if(x==sum)

System.out.println(x+"是完數(shù)");

}

}

}

7. 編寫應(yīng)用程序,分別使用while和for循環(huán)計算8+88+888+…前10項之和。

答: ①for循環(huán)

class TheSum

{

public static void main(String args[])

{

long sum=0,data=8;

for(int i=1;i<=10;i++)

{

sum=sum+data;

data=data*10+8;

}

System.out.println(sum);

}

}

②while循環(huán)

class TheSum

{

public static void main(String args[])

{

long sum=0,data=8,i=0;

while(++i<=10)

{

sum=sum+data;

data=data*10+8;

}

System.out.println(sum);

}

}

8. 編寫應(yīng)用程序,輸出滿足1+2+3+…+n<8888的最大正整數(shù)n。

答:

class Maxn

{

public static void main(String args[])

{

int k=1,sum=0;

while((sum+=k)<8888)

k++;

k--;

System.out.println("最大能取到:"+k);

}

}

第4章?類、對象和接口

1. 類中的實例變量在什么時候會被分配內(nèi)存空間?

答: 當(dāng)該類創(chuàng)建對象之后,實例變量才會被分配相應(yīng)的內(nèi)存空間。

2. 什么叫方法的重載?構(gòu)造方法可以重載嗎?

答:①一個類中可以有多個方法具有相同的名字,但這些方法的參數(shù)必須不同,即或者是參數(shù)的個數(shù)不同,或者是參數(shù)的類型不同(方法的重載體現(xiàn)了多態(tài)性,即功能多態(tài)性)。

②構(gòu)造方法可以重載。

3. 類中的實例方法可以操作類變量(static變量)嗎?類方法(static方法)可以操作實例變量嗎?

答:①類中的實例方法可以操作類變量。

②類方法不可以操作實例變量

4. 類中的實例方法可以用類名直接調(diào)用嗎?

答: 類中的實例方法不可以用類名直接調(diào)用。

5. 舉例說明protected方法和友好方法的區(qū)別。

答: 當(dāng)子類與父類不在同一個包中時,子類可以繼承父類的protected方法;而友好方法此時則不能被子類繼承。

6. 舉例說明類變量和實例變量的區(qū)別。

答:⑴書寫: 定義成員變量時,類變量有static修飾;實例變量沒有static修飾。

例: class A

{

int x; //實例變量

static int y; //類變量

}

⑵內(nèi)存: 不創(chuàng)建對象,類的實例變量不會被分配內(nèi)存空間;類變量被分配相應(yīng)的內(nèi)存空間。

不同對象的實例變量被分配不同的內(nèi)存空間;不同對象的類變量被分配相同的內(nèi)存空間。

任何一個對象改變類變量,其他對象的相應(yīng)類變量也發(fā)生相應(yīng)變化。

一個對象的實例變量發(fā)生改變,不影響其他對象的相應(yīng)實例變量。

例: 執(zhí)行語句:?A1.x=10; A1.y=20;

這時A2.x的值也是10;而A2.y的值保持原來的初值。

⑶使用: 類變量可以被類方法操作;而實例變量不能被類方法操作。

例:?class A

{

int x;

static int y;

static void func()

{

b=10; //合法

a=20; //非法

}

}

類變量可以通過類名訪問;實例變量不能通過類名訪問。

例: class A

{

int x;

static int y;

}

class B

{

public void func();

{

A.x=10; //非法

A.y=20; //合法

}

}

7. 子類將繼承父類的哪些成員變量和方法?子類在什么情況下隱藏父類的成員變量和方法?在子類中是否允許有一個方法和父類的方法名字相同,而類型不同?

答:①子類和父類在同一個包中時,子類可以繼承父類的除private屬性的所有方法和成員變量,當(dāng)子類與

父類不在同一個包中時,子類只能繼承父類的protected和public屬性的成員變量和方法。

②子類中定義的成員變量和父類中的成員變量同名時,子類就隱藏了繼承的成員變量;子類中定義一個方法,并且這個方法的名字、返回類型、參數(shù)個數(shù)和類型與從父類繼承的方法完全相同,子類就隱藏從父類繼承來的方法(方法的重寫)。

③在子類中允許有一個方法和父類的方法名字相同而類型不同。

8. 父類的final方法可以被子類重寫嗎?

答: 父類的final方法不能被子類重寫。

9. 什么類中可以有abstract方法?

答: abstract類中可以有abstract方法。

10.什么叫對象的上轉(zhuǎn)型對象?

答: B類是A類的子類或間接子類,當(dāng)用子類B創(chuàng)建一個對象b并把這個對象的引用放到A類的對象a中時,稱A類對象a是子類對象b的上轉(zhuǎn)型對象。

11.什么叫接口的回調(diào)?

答: 可以把實現(xiàn)某一接口的類創(chuàng)建的對象的引用賦給該接口聲明的接口變量中。

12.下列程序有什么錯誤?

public class Takecare

{

int a=90;

static float b=10.98f;

public static void main(String args[])

{

float c=a+b;

System.out.println("c="+c);

}

}

答: 語句float c=a+b;錯誤。原因是類方法main操作了實例變量a。

13. 請寫出下列程序的輸出結(jié)果。

class A

{

public int f(int x)

{

return x+1;

}

}

class B extends A

{

public int f(int x)

{

return x*x;

}

}

public class E

{

public static void main(String args[])

{

A a=new B();

int m=a.f(10);

System.out.println(m);

}

}

答: 100

14. 請寫出下列程序的輸出結(jié)果。

class A

{

int x;

public void setX(int x)

{

this.x=x;

}

int getX()

?

{

return x;

}

}

class B

{

public void f(A a)

{

a.setX(100);

}

}

public class E

{

public static void main(String args[])

{

A a=new A();

a.setX(8);

System.out.println(a.getX());

B b=new B();

b.f(a);

System.out.println(a.getX());

}

}

答: 8

100

15.使用接口有哪些注意事項?模仿例子4.27,編寫一個類實現(xiàn)兩個接口的程序。

答:①一個類使用接口時,要有implements關(guān)鍵字,當(dāng)一個類使用多個接口時,接口名要用逗號“,”隔開;使用接口的類除abstract類外,必須實現(xiàn)接口的所有方法,并且實現(xiàn)接口的方法時,方法名字、返回類型、參數(shù)個數(shù)及類型必須與接口中的完全一致;類在實現(xiàn)接口時,方法體一定要用public修飾,如果接口方法的返回類型不是void型,在類中實現(xiàn)接口時,方法體至少有一個return語句。

②?interface 表面積

{

double allArea(double r);

}

interface 體積

{

double volu(double r);

}

class Sph implements 表面積,體積

{

double PI=3.14159;

public double allArea(double r)

{

return 4*PI*r*r;

}

public double volu(double r)

{

return 4.0/3*PI*r*r*r;

}

}

public class Test

{

public static void main(String args[])

{

double r=5.0;

Sph a=new Sph();

System.out.println("半徑為5的球的表面積是:"+a.allArea(r));

System.out.println("半徑為5的球的體積是:"+a.volu(r));

}

}

16.編寫一個類A,該類創(chuàng)建的對象可以調(diào)用方法f輸出英文字母表,然后再編寫一個該類的子類B,要求子類B必須繼承A類的方法f(不允許重寫),子類創(chuàng)建的對象不僅可以調(diào)用方法f輸出英文字母表,而且調(diào)用子類新增的方法g輸出希臘字母表。

答: class A

{

int m;

void f()

{

for(m=65;m<91;m++)

System.out.print((char)m+" ");

for(m=97;m<123;m++)

System.out.print((char)m+" ");

System.out.println(" ");

}

}

class B extends A

{

int i;

void g()

{

for(i=913;i<930;i++)

System.out.print((char)i+" ");

for(i=931;i<938;i++)

System.out.print((char)i+" ");

for(i=945;i<962;i++)

System.out.print((char)i+" ");

for(i=963;i<970;i++)

System.out.print((char)i+" ");

?

System.out.println(" ");

}

}

public class Test

{

public static void main(String args[])

{

B b=new B();

System.out.println("我調(diào)用方法f輸出英文字母表:");

b.f();

System.out.println("我調(diào)用方法g輸出希臘字母表:");

b.g();

}

}

17.編寫一個異常類MyException,再編寫一個類Student,該類有一個產(chǎn)生異常的方法public void speak(int m) throws MyException,要求參數(shù)m的值大于1000時,方法拋出一個MyException對象。最后編寫主類,在主類的main方法中用Student創(chuàng)建一個對象,讓該對象調(diào)用speak方法。

答: class MyException extends Exception

{

String str1;

MyException(int m)

{

str1=m+"出現(xiàn)錯誤?可能造成的原因是取值大于1000";

}

public void showStr1()

{

System.out.println(str1);

}

}

class Student

{

public void speak(int m) throws MyException

{

if(m>1000)

{

MyException exception=new MyException(m);

throw exception;

}

else

System.out.println(m);

}

}

public class Test

{

?

public static void main(String agrs[])

{

int m;

Student stu1=new Student();

m=987;

try

{

stu1.speak(m);

m=1234;

stu1.speak(m);

}

catch(MyException e)

{

e.showStr1();

}

}

}

18.編寫一個類,該類有一個方法public int f(int a,int b),該方法返回a和b的最大公約數(shù)。然后再編寫一個該類的子類,要求子類重寫方法f,而且重寫的方法將返回a和b的最小公倍數(shù)。要求在重寫的方法的方法體中首先調(diào)用被隱藏的方法返回a和b的最大公約數(shù)m,然后將乘積(a*b)/m返回。要求在應(yīng)用程序的主類中分別使用父類和子類創(chuàng)建對象,并分別調(diào)用方法f計算兩個正整數(shù)的最大公約數(shù)和最小公倍數(shù)。

答: class A

{

public int f(int a,int b)

{

if(a<b)

{

int temp=0;

temp=a;

a=b;

b=temp;

}

int r=a%b;

while(r!=0)

{

a=b;

b=r;

r=a%b;

}

return b;

}

}

class B extends A

{

public int f(int a,int b)

{

int m;

m=super.f(a,b);

return (a*b)/m;

}

}

public class Test

{

public static void main(String args[])

{

A a=new A();

System.out.println("18和102的最大公約數(shù)是:"+a.f(18,102));

B b=new B();

System.out.println("18和102的最小公倍數(shù)是:"+b.f(18,102));

}

}

第5章?字符串

1. 使用String類的public String toUpperCase()方法可以將一個字符串中的小寫字母變成大寫字母,使用public String toLowerCase()方法可以將一個字符串中的大寫字母變成小寫字母。編寫一個程序,使用這兩個方法實現(xiàn)大小寫的轉(zhuǎn)換。

答: class Test

{

public static void main(String args[])

{

String str="I can use Java";

System.out.println("要轉(zhuǎn)換的字符串是:"+str);

String s=str.toUpperCase();

System.out.println("轉(zhuǎn)換成大寫字符串是:"+s);

s=str.toLowerCase();

System.out.println("轉(zhuǎn)換成小寫字符串是:"+s);

}

}

2. 使用String類的public String concat(String str)方法可以把調(diào)用該方法的字符串與參數(shù)指定的字符串連接,把str指定的串連接到當(dāng)前串的尾部獲得一個新的串。編寫一個程序通過連接兩個串得到一個新串,并輸出這個新串。

答: class Test

{

public static void main(String args[])

{

String str1="I can u";

String str2="se Java";

String s=str1.concat(str2);

System.out.println("將字符串"+str1+"與字符串"+str2+"連接后得到的新字符串是:");

System.out.println(s);

}

}

3. String類的public char charAt(int index)方法可以得到當(dāng)前字符串index位置上的一個字符。說出下列程序的輸出結(jié)果。

public class E3

{

public static void main(String args[])

{

String s="中國科學(xué)技術(shù)大學(xué)";

char a=s.charAt(2),b=s.charAt(6);

System.out.print(a);

System.out.println(b);

}

}

答: 科大

4. 使用java.util包中的Arrays類的靜態(tài)方法public static void sort(double a[])可以把參數(shù)a指定的double型數(shù)組按升序排序,使用java.util包中的Arrays類的靜態(tài)方法public static void sort(double a[],int start,int end)可以把參數(shù)a指定的double型數(shù)組中從位置start到end-1位置的數(shù)按升序排序。寫出下列程序的輸出結(jié)果。

import java.util.*;

public class E4

{

public static void main(String args[])

{

int a[]={23,67,89,90,-987};

double b[]={12.89,90.87,34,678.987,-98.78,0.89};

Arrays.sort(a);

Arrays.sort(b,1,4);

for(int i=0;i<=4;i++)

{

System.out.print(a[i]+",");

}

for(int i=0;i<b.length;i++)

{

System.out.print(b[i]+",");

}

}

}

答: -987,23,67,89,90,12.89,34.0,90.87,678.987,-98.78,0.89,

5. 使用java.lang包中System類的靜態(tài)方法arraycopy可以實現(xiàn)數(shù)組的快速復(fù)制,上機(jī)實習(xí)下列程序,并總結(jié)出arraycopy方法參數(shù)的使用規(guī)則。?

public class ArrayCopy

{

public static void main(String args[])

{

char a1[]={'a','b','c','d','e','f'},b1[]={'1','2','3','4','5','6'};

System.arraycopy(a1,0,b1,1,a1.length-1);

System.out.println(new String(a1));

System.out.println(new String(b1));

byte a2[]={97,98,99,100,101,102},b2[]={65,67,68,69,70,71};

System.arraycopy(b2,0,a2,3,b2.length-3);

System.out.println(new String(a2));

System.out.println(new String(b2));

}

}

答:①運(yùn)行結(jié)果:abcdef

1abcde

abcACD

ACDEFG

②arraycopy的方法是public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)。其中五個參數(shù)分別表示:

src - 被復(fù)制的數(shù)組

srcPos - 從第幾個元素開始復(fù)制

dest - 要復(fù)制到的數(shù)組

destPos - 從第幾個元素開始粘貼

length - 一共需要復(fù)制的元素個數(shù)

第6章?時間、日期和數(shù)字

1. 用Data類不帶參數(shù)的構(gòu)造方法創(chuàng)建日期,要求日期的輸出格式是:星期?小時?分?秒。

答: import java.util.*;

import java.text.*;

class Test

{

public static void main(String args[])

{

Date 時間=new Date();

SimpleDateFormat s=new SimpleDateFormat("E HH時?mm分?ss秒");

System.out.println(s.format(時間));

}

}

2. 輸出2006年2月的日歷頁,程序需處理閏年問題。

答: import java.util.*;

class Test

{

public static void main(String args[])

{

int year=2006,month=2;

int allDay;

if((year%4==0&&year%100!=0)||(year%400==0))

allDay=29;

else

allDay=28;

Calendar feb=Calendar.getInstance();

feb.set(2006,1,1);

int dat=feb.get(Calendar.DAY_OF_WEEK)-1;

String a[]=new String[dat+allDay];

for(int i=0;i<dat;i++)

{

a[i]=" ";

}

for(int i=dat,n=1;i<(dat+allDay);i++)

{

if(n<=9)

a[i]=String.valueOf(n)+" ";

else

a[i]=String.valueOf(n)+" ";

n++;

}

System.out.println(" "+year+" 年?"+month+"月");

System.out.println("日?一?二?三?四?五?六");

for(int j=0;j<a.length;j++)

{

if(j%7==0)

{

System.out.println(" ");

}

System.out.print(a[j]);

}

}

}

3. 計算某年、某月、某日和某年、某月、某日之間的天數(shù)間隔。要求年、月、日通過main方法的參數(shù)傳遞到程序中。

答: import java.util.*;

class Test

{

public static void main(String args[])

{

Calendar c=Calendar.getInstance();

c.set(2000,0,1);

?

long time1=c.getTimeInMillis();

c.set(2008,7,8);

long time2=c.getTimeInMillis();

long dayCous=(time2-time1)/(1000*60*60*24);

System.out.println("2008年8月8日和2000年1月1日相隔"+dayCous+"天");

}

}

4. 編程練習(xí)?Math類的常用方法。

答: import java.text.*;

public class Test

{

public static void main(String args[])

{

double a=Math.abs(-10);

System.out.println("-10的絕對值是:"+a);

double maxNum=Math.max(123.456,-5.4321);

System.out.println("123.456與-5.4321中的最大值是:"+maxNum);

double minNum=Math.min(123.456,-5.4321);

System.out.println("123.456與-5.4321中的最小值是:"+minNum);

int randomNum=(int)(Math.random()*10)+1;

System.out.println("輸出一個1到10的隨機(jī)數(shù)是:"+randomNum);

double powNum=Math.pow(2,10);

System.out.println("2的10次冪是:"+powNum);

double sqrtNum=Math.sqrt(10);

System.out.println("10的平方根是:"+sqrtNum);

double logNum=Math.log(2);

System.out.println("2的對數(shù)是:"+logNum);

double sinNum=Math.sin(-10);

System.out.println("-10的正弦值是:"+sinNum);

double asinNum=Math.asin(0.5);

System.out.println("0.5的反正弦值是:"+asinNum);

System.out.println("格式化之前的數(shù)是:"+sqrtNum);

NumberFormat f=NumberFormat.getInstance();

f.setMaximumFractionDigits(10);

f.setMinimumIntegerDigits(4);

String s=f.format(sqrtNum);

System.out.println("格式化后:"+s);

}

}

5. 使用BigInteger類計算1!+3!+5!+7!+…的前30項的和。

答: import java.math.*;

public class Test

{

public static void main(String args[])

?

{

BigInteger sum=new BigInteger("0"),

jieCheng=new BigInteger("1"),

ONE=new BigInteger("1"),

i=ONE;

int k=0;

while(++k<=30)

{

sum=sum.add(jieCheng);

i=i.add(ONE);

jieCheng=jieCheng.multiply(i);

i=i.add(ONE);

jieCheng=jieCheng.multiply(i);

}

System.out.println(sum);

}

}


第7章?AWT組件及事件處理

1. Frame類對象的默認(rèn)布局是什么布局?和Panel類對象的默認(rèn)布局相同嗎?

:Frame類對象的默認(rèn)布局是BorderLayout布局;

②不相同,Panel類對象的默認(rèn)布局是FlowLayout布局。

2. 一個容器對象是否可以使用add方法添加一個Frame窗口?

: 不可以。

3. Checkbox對象可以觸發(fā)ItemEvent事件嗎?

: 可以。

一個動物聲音“模擬器”。希望模擬器可以模擬許多動物的叫聲,要求如下

Animal.java

public abstract class Animal {

abstract void cry();

? ? abstract void getAnimaName();

}

Dog.java

public class Dog extends Animal{

void cry(){

System.out.println("狗的叫聲:汪汪汪");

}

void getAnimaName(){

System.out.println("名字:狗");

}

}

Cat.java

public class Cat extends Animal{

void cry(){

System.out.println("貓的叫聲:喵喵喵");

}

void getAnimaName(){

System.out.println("名字:貓");

}

}

Simulator,java

public class Simulator {

void playSound(Animal animal){

animal.getAnimaName();

animal.cry();

}

}

public class Application {

public static void main(String args[]){

Simulator simulator=new Simulator();

simulator.playSound(new Cat());

simulator.playSound(new Dog());

}

}


計一個動物聲音“模擬器”,需要用到接口。希望模擬器可以模擬許多動物的叫聲,要求如下。

Animal.java

public interface Animal{

? ? public abstract void cry();

? ? public abstract String getAnimalName();

}


Simulator.java

public class Simulator{

? ? public void playSound(Animal animal){

? ? System.out.print("現(xiàn)在播放"+animal.getAnimalName()+"類的聲音:");

? ? animal.cry();

? ? }

}


Dog.java

public class Dog implements Animal{

? ? public void cry(){

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

? ? }

? ? public String getAnimalName(){

? ? ? ? return "狗";

? ? }

}


Cat.java

public class Cat implements Animal{

? ? public void cry(){

? ? ? ? System.out.println("喵喵...喵喵");

? ? }

? ? public String getAnimalName(){

? ? ? ? return "貓";

? ? }

}


Application.java

public class E{

? ? public static void main(String args[]){

? ? ? ? Simulator simulator = new Simulator();

? ? ? ? simulator.playSound(new Dog());

? ? ? ? simulator.playSound(new Cat());

? ? }

}

第3章中的例子9的程序允許用戶在鍵盤依次輸入若干個數(shù)字(每輸入一個數(shù)字都需要按回車鍵確認(rèn)),程序?qū)⒂嬎愠鲞@些數(shù)的和以及平均值。請在第3章的例子9中增加斷言語句,當(dāng)用戶輸入的數(shù)字大于100或小于0時,程序立刻終止執(zhí)行,并提示這是一個非法的成績數(shù)據(jù)。

import java.util.*;


public class E{

? public static void main(String args[]){

? ? ?Scanner reader = new Scanner(System.in);

? ? ?double sum = 0;

? ? ?int m = 0;

? ? ?while(reader.hasNextDouble()){

? ? ? ? double x = reader.nextDouble();

? ? ? ? assert x< 100:"數(shù)據(jù)不合理";

? ? ? ? m = m+1;

? ? ? ? sum = sum+x;

? ? ? ? }

? ? ? ? System.out.printf("%d個數(shù)的和為%f\n",m,sum);

? ? ? ? System.out.printf("%d個數(shù)的平均值為%f\n",m,sum/m);

? ? ? ? }

? ? }

編寫應(yīng)用程序,有一個標(biāo)題為“計算的窗口”的窗口,窗口的布局為FlowLayout布局。窗口中添加兩個文本區(qū),當(dāng)我們在一個文本區(qū)中輸入若干個數(shù)時,另一個文本區(qū),同時對輸入的數(shù)進(jìn)行求和運(yùn)算并求出平均值,也就是說隨著輸入的變化,另一個文本區(qū)不斷地更新求和及平均值。

: import java.awt.*;

import java.awt.event.*;

import java.util.*;

class Calculated extends Frame implements TextListener

{

TextArea text1,text2; //定義了2個文本區(qū)

Calculated(String s) //標(biāo)題為“計算的窗口”的窗口

{

super(s);

setLayout(new FlowLayout()); //窗口布局為FlowLayout

text1=new TextArea(5,23);

text2=new TextArea(5,23);

add(text1);

add(text2);

text2.setEditable(false); //顯示求和結(jié)果和平均值的文本區(qū)禁止編輯

text1.addTextListener(this);

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

}

);

setBounds(100,100,400,160);

setVisible(true);

validate();

}

public void textValueChanged(TextEvent e)

{

String s=text1.getText();

StringTokenizer geshu=new StringTokenizer(s);

int n=geshu.countTokens();

double a[]=new double[n];

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

{

String temp=geshu.nextToken();

double date=Double.parseDouble(temp);

a[i]=date;

}

double sum=0,average;

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

{

sum=sum+a[i];

}

average=sum/n;

text2.setText(null);

text2.append(":"+sum+"\n"+"平均數(shù):"+average);

}

}

public class Test

{

public static void main(String args[])

{

Calculated calc=new Calculated("計算的窗口");

}

}

判斷回文數(shù)

import java.util.Scanner;

public class Number {

? ? public static void main(String args[]) {

? ? ? ? int number = 0, d5, d4, d3, d2, d1;

? ? ? ? Scanner reader = new Scanner(System.in);

? ? ? ? System.out.println("輸入一個1至99999之間的數(shù)");

? ? ? ? number = reader.nextInt();

?

? ? ? ? if (number >= 1 && number <= 99999)? ? //判斷number在1 ~ 99999之間的條件

? ? ? ? {

? ? ? ? ? ? d5 = number / 10000;? ? //計算number的最高位(萬位)d5

? ? ? ? ? ? d4 = number % 10000 / 1000;//計算number的千位d4

? ? ? ? ? ? d3 = number % 1000 / 100;//計算number的百位d3

? ? ? ? ? ? d2 = number % 100 / 10;

? ? ? ? ? ? d1 = number % 10;

? ? ? ? ? ? if (number > 9999)? ? //判斷number是5位數(shù)的條件

? ? ? ? ? ? {

? ? ? ? ? ? ? ? System.out.println(number + "是5位數(shù)");

? ? ? ? ? ? ? ? if (d5 == d1 && d4 == d2)? ? //判斷number是回文數(shù)的條件

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? System.out.println(number + "是回文數(shù)");

? ? ? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? ? ? System.out.println(number + "不是回文數(shù)");

? ? ? ? ? ? ? ? }

? ? ? ? ? ? } else if (number < 10000 && number > 999)? ? //判斷number是4位數(shù)的條件

? ? ? ? ? ? {

? ? ? ? ? ? ? ? System.out.println(number + "是4位數(shù)");

? ? ? ? ? ? ? ? if (d4 == d1 && d3 == d2)? ? //判斷number是回文數(shù)的條件

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? System.out.println(number + "是回文數(shù)");

? ? ? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? ? ? System.out.println(number + "不是回文數(shù)");

? ? ? ? ? ? ? ? }

? ? ? ? ? ? } else if (number < 1000 && number > 99)? ? //判斷number是3位數(shù)的條件

? ? ? ? ? ? {

? ? ? ? ? ? ? ? System.out.println(number + "是3位數(shù)");

? ? ? ? ? ? ? ? if (d3 == d1)? ? //判斷number是回文數(shù)的條件

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? System.out.println(number + "是回文數(shù)");

? ? ? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? ? ? System.out.println(number + "不是回文數(shù)");

? ? ? ? ? ? ? ? }

? ? ? ? ? ? } else if (d2 != 0) {

? ? ? ? ? ? ? ? System.out.println(number + "是2位數(shù)");

? ? ? ? ? ? ? ? if (d1 == d2) {

? ? ? ? ? ? ? ? ? ? System.out.println(number + "是回文數(shù)");

? ? ? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? ? ? System.out.println(number + "不是回文數(shù)");

? ? ? ? ? ? ? ? }

? ? ? ? ? ? } else if (d1 != 0) {

? ? ? ? ? ? ? ? System.out.println(number + "是1位數(shù)");

? ? ? ? ? ? ? ? System.out.println(number + "是回文數(shù)");

? ? ? ? ? ? }

? ? ? ? ? ? //}

? ? ? ? ? ? else {

? ? ? ? ? ? ? ? System.out.printf("\n%d在不1~99999之間", number);

? ? ? ? ? ? }

? ? ? ? }

? ? }

}

輸出希臘字母表


```java

public class GreekAlphabet {

? ? public static void main(String args[]) {

? ? ? ? int startPosition = 0, endPosition = 0;

? ? ? ? char cStart = 'α', cEnd = 'ω';

? ? ? //cStart做int轉(zhuǎn)換運(yùn)算,并將結(jié)果賦值給startPosition

? ? ? ? startPosition=(int)cStart;

? ? ? //cEnd做int轉(zhuǎn)換運(yùn)算,并將結(jié)果賦值給endPosition

? ? ? ? endPosition=(int)cEnd;

? ? ? ? System.out.println("希臘字母\'α\'在unicode表的順序位置:" + startPosition);

? ? ? ? System.out.println("希臘字母\'ω\'在unicode表的順序位置:" + endPosition);

? ? ? ? System.out.println("希臘字母表:");


? ? ? ? for (int i = startPosition; i <= endPosition; i++) {

? ? ? ? ? ? char c = '\0';

? ? ? ? ?//i做char型轉(zhuǎn)換運(yùn)算,并將結(jié)果賦值給c

? ? ? ? ? ? c=(char)i;

? ? ? ? ? ? System.out.print("? " + c);

? ? ? ? ? ? if ((i - startPosition + 1) % 10 == 0) {

? ? ? ? ? ? ? ? System.out.println("");

? ? ? ? ? ? }

? ? ? ? }

? ? }

}

實驗2.2 數(shù)組的引用與元素

public class InputArray {

? ? public static void main(String args[]) {

? ? ? ? int[] a = {100, 200, 300};

? ? ? //輸出數(shù)組a的長度

? ? ? ? System.out.println("數(shù)組a的長度="+a.length);

? ? ? //輸出數(shù)組a的引用

? ? ? ? System.out.println("數(shù)組a的位置="+a);

? ? ? ? int b[][] = {{1}, {1,1}, {1,2,1}, {1,3,3,1}, {1,4,6,4,1}};

? ? ? //輸出二維數(shù)組b的一維數(shù)組的個數(shù)

? ? ? ? System.out.println(b[0].length);

? ? ? ? System.out.println(b[4][2]);

? ? ? //將數(shù)組a的引用賦給b[4];

? ? ? ? b[4]=a;

? ? ? ? System.out.println(b[4][2]);

? ? }

}

實驗4.1 機(jī)動車

public class Vehicle {

? ? ? ? double speed;//聲明double型變量speed,刻畫速度

? ? ? ? int power;? //聲明int型變量power,刻畫功率

?

? ? void speedUp(int s) {

? ? ? ? speed = s+speed;//將參數(shù)s的值與成員變量speed的和賦值給成員變量speed

? ? }

? ? void speedDown(int d) {

? ? ? ? speed= speed-d; //將成員變量speed與參數(shù)d的差賦值給成員變量speed

? ? }

? ? void setPower(int p) {

? ? ? ? power = p; //將參數(shù)p的值賦值給成員變量power

? ? }

? ? int getPower() {

? ? ? ? return? power; //返回成員變量power的值

? ? }

? ? double getSpeed() {

? ? ? ? return speed;

? ? }

}


public class User {

? ? public static void main(String args[]) {

? ? ? ? Vehicle car1, car2;

? ? ? car1 = new Vehicle();? //使用new運(yùn)算符和默認(rèn)的構(gòu)造方法創(chuàng)建對象car1

? ? ? car2 = new Vehicle();//使用new運(yùn)算符和默認(rèn)的構(gòu)造方法創(chuàng)建對象car2

? ? ? ? car1.setPower(128);

? ? ? ? car2.setPower(76);

? ? ? ? System.out.println("car1的功率是:"+car1.getPower());

? ? ? ? System.out.println("car2的功率是:"+car2.getPower());

? ? ? car1.speedUp(80);//car1調(diào)用speedUp()方法將自己的speed的值增加80

? ? ? car2.speedUp(80);//car2調(diào)用speedUp()方法將自己的speed的值增加80

? ? ? ? System.out.println("car1目前的速度:"+car1.getSpeed());

? ? ? ? System.out.println("car2目前的速度:"+car2.getSpeed());

? ? ? ? car1.speedDown(10);

? ? ? ? car2.speedDown(20);

? ? ? ? System.out.println("car1目前的速度:"+car1.getSpeed());

? ? ? ? System.out.println("car2目前的速度:"+car2.getSpeed());

? ? }

}

實驗3.2 猜數(shù)字游戲

import java.util.Scanner;

import java.util.Random;

public class GuessNumber {

? ? public static void main(String args[]) {

? ? ? ? Scanner reader = new Scanner(System.in);

? ? ? ? Random random = new Random();

? ? ? ? System.out.println("給你一個1至100之間的整數(shù),請猜測這個數(shù)");

? ? ? ? int realNumber = random.nextInt(100) + 1;? //random.nextInt(100)是[0,100)

? ? ? ? //中的隨機(jī)整數(shù)

? ? ? ? int yourGuess = 0;

? ? ? ? System.out.print("輸入您的猜測:");

? ? ? ? yourGuess = reader.nextInt();

? ? ? ? while (yourGuess != realNumber)? ? //循環(huán)條件

? ? ? ? {

? ? ? ? ? ? if (yourGuess > realNumber)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? System.out.print("猜大了,再輸入你的猜測:");

? ? ? ? ? ? ? ? yourGuess = reader.nextInt();

? ? ? ? ? ? }

? ? ? ? ?else if (yourGuess < realNumber)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? System.out.print("猜小了,再輸入你的猜測:");

? ? ? ? ? ? ? ? yourGuess = reader.nextInt();

? ? ? ? ? ? }

?

? ? ? ? }

? ? ? ? System.out.println("猜對了");

?

? ? }

}

while放在外面,是因為while的循環(huán)條件是yourGuess != realNumber。如果要放在while循環(huán)里里面則要改變循環(huán)條件,同時要放進(jìn)判斷語句里面。

基于《java2實用教程》的java知識點(diǎn)復(fù)習(xí)整理【 歸納總結(jié)篇】的評論 (共 條)

分享到微博請遵守國家法律
花垣县| 沿河| 尼勒克县| 铜川市| 潍坊市| 涡阳县| 余江县| 东兴市| 凤凰县| 海兴县| 成都市| 应城市| 五莲县| 无棣县| 本溪市| 班玛县| 丰顺县| 桓台县| 大名县| 绵阳市| 南丰县| 曲阳县| 冕宁县| 岳池县| 张家港市| 襄城县| 文昌市| 彭阳县| 阿合奇县| 法库县| 新绛县| 冀州市| 西林县| 蒙阴县| 恭城| 四平市| 伊吾县| 保山市| 沽源县| 丰镇市| 太和县|