java程序設(shè)計試題庫_第1頁
java程序設(shè)計試題庫_第2頁
java程序設(shè)計試題庫_第3頁
java程序設(shè)計試題庫_第4頁
java程序設(shè)計試題庫_第5頁
已閱讀5頁,還剩123頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《Java語言程序設(shè)計基礎(chǔ)教程》

練習(xí)思索題參考答案

第1章Java程序設(shè)計概述

1.1單項選擇題

1.編譯JavaApplication源文件將產(chǎn)生相應(yīng)的字節(jié)碼文件,擴展名是什

A..javaB..class

C..htmlD..exe

解答:B

2.Java語言具有許多優(yōu)點和特點,下列選項中,哪個反映了Java中“一

次編譯,隨處運行”的特點。

A.簡潔性B.平臺無關(guān)性

C.面對對象性D.平安性

解答:B

3.Java語言具有許多優(yōu)點和特點,下列選項中,哪個反映了Java中并

行機制的特點。

A.多線程B.平臺無關(guān)性

C.面對對象性D.平安性

解答:A

4.在Java語言中,下列哪些語句關(guān)于內(nèi)存回收的說明是正確的?

A.程序員必需創(chuàng)建一個線程來釋放內(nèi)存;

B.內(nèi)存回收程序負(fù)責(zé)釋放無用內(nèi)存;

C.內(nèi)存回收程序允許程序員干脆釋放內(nèi)存;

D.內(nèi)存回收程序可以在指定的時間釋放內(nèi)存對象

解答:B

5.一個Java源文件中最多只能有多少個public類。

A.1個B.2個

C.3個D.隨意多個

解答:A

6.下面哪一個不是Java語言所具有的特點。

A.沒有全局變量,在類的定義外部沒有任何的變量定義;

B.不干脆支持指針操作,而運用更平安的引用類型;

C.支持子類對父類的多繼承;

D.具有自動垃圾收集功能;

解答:C

7.下面哪一個不是Java開發(fā)工具包JDK的組成部分。

A.Java的編譯器;

B.Java的說明器;

C.Java的API繼承類庫;

D.Eclipse開發(fā)工具;

解答:C

8.JDK供應(yīng)的編譯器是()o

A.java.exeB.javac.exe

C.javap.exeD.javaw.exe

解答:B

9.作為Java應(yīng)用程序入口的main方法,其聲明格式可以是()

A.publicvoidmain(String[]args)

B.publicstaticvoidmain(String[]args)

C.publicstaticvoidMain(String*args)

D.publicintmain(String[]args)

解答:B

10.下列說法正確的是(A)

A、JAVA程序的main方法必需寫在類里面

B、JAVA程序中可以有多個main方法

C、JAVA程序中類名必需與文件名一樣

D、JAVA程序的main方法中假如只有一條語句,可以不用{}(大括號)

括起來

11.下列哪些語句關(guān)于Java內(nèi)存回收的說明是正確的?(B)

A、程序員必需創(chuàng)建一個線程來釋放內(nèi)存

B、內(nèi)存回收程序負(fù)責(zé)釋放無用內(nèi)存

C、內(nèi)存回收程序允許程序員干脆釋放內(nèi)存

D、內(nèi)存回收程序可以在指定的時間釋放內(nèi)存對象

1.2填空題

1、開發(fā)與運行Java程序須要經(jīng)過的三個主要步驟為、

和O

解答:編輯源程序、編譯生成字節(jié)碼和說明運行字節(jié)碼

2、運用Java編譯器—javac—.exe編譯源文件得到字節(jié)碼文件。

3、Java應(yīng)用程序必需通過Java說明器_JAVA_.exe來說明執(zhí)行

其字節(jié)碼文件。

4、假如Java源文件中有一個類是public類,那么源文件的名字必

需與這個類的名字完全.相同,擴展名是.javao

5、Java應(yīng)用程序總是從主類的—main—方法起先執(zhí)行.

1.3簡答題

13.簡述Java程序的開發(fā)過程?

(1)運用一個文字編輯器,編寫源文件。(2)運用java編譯器,編

譯源文件得到字節(jié)碼文件。

(3)說明運行字節(jié)碼,分兩種java應(yīng)用程序必需通過java說明器來說

明執(zhí)行,java小應(yīng)用程序必需運用說明器和閱讀器運行程序。

1.什么是Java虛擬機?為什么Java被稱作是“平臺無關(guān)的編程語

言”?

解答:

Java虛擬機是一個可以執(zhí)行Java字節(jié)碼的虛擬機進程。Java源文

件被編譯成能被Java虛擬機執(zhí)行的字節(jié)碼文件。

Java被設(shè)計成允許應(yīng)用程序可以運行在隨意的平臺,而不須要程序員

為每一個平臺單獨重寫或者是重新編譯。Java虛擬機讓這個變?yōu)榭赡埽?/p>

因為它知道底層硬件平臺的指令長度和其他特性。

3.Java語言的關(guān)鍵特點有哪些?

解答:

簡潔性

平臺無關(guān)性

面對對象性

平安性

分布式

多線程

動態(tài)性

1.4綜合題

第2章Java基本的程序設(shè)計結(jié)構(gòu)

2.1單項選擇題

1、下面哪一項在java中是非法的標(biāo)識符?()

A.$user

B.point

C.You&me

D.endline

解答:C

2、若有定義inta=9,b=6;那么a>b的值是:()

A.0B.1

C.falseD.true

解答:D

3、執(zhí)行完以下代碼int口x=newint[25];后,以下說明正確的是:

)

A.x[24]為0B.x[24床定義

C.x[25]為0D.x[0]為空

解答:A

4、Java應(yīng)用程序的main方法中有以下語句,則輸出的結(jié)果是

)o

int[]X={2,3,-8,7,9};

intmax=x[O];

for(inti=1;i<x.length;i++){

if(x[i]>max)

max=x[i];

System,out.println(max);

A.2B.-8

C.7D.9

解答:D

5、設(shè)x=1,y=2,z=3,則表達式y(tǒng)+=z----/++x的值是

)

A.3B.3.5

C.4D.5

解答:A

5、執(zhí)行System.out.printing/4),這條代碼的輸出結(jié)果是()

A.1B.1.25

C.1.5D.0

解答:A

6、下列語句有錯誤的是:()

A.int[]a;B.int[]b=newint[10];

C.intc[]=newint[];D.intd[]=null;

解答:C

7、下列語句有錯誤的是:()

A.inta[][]=newint[5][5];B.int[][]b=newint[5][5];

C.int[]c[]=newint[5][5];D.int[][]d=newint[5,5];

解答:D

8、下列哪一個不屬于Java中的8種基本數(shù)據(jù)類型()

A.double;B.char;

C.int;D.String;

解答:D

9、以下數(shù)據(jù)類型存儲空間最大的是()o

(A)byte(B)long(C)float(D)char

解答:B

10^System.out.println("5"+2);的輸出結(jié)果應(yīng)當(dāng)是()。

A52B7

C2D5

答案:A

11.在類的定義中可以有兩個同名方法,每個方法的參數(shù)不同,這種

現(xiàn)象稱為方法(D)o

(A)封裝(B)繼承(C)覆蓋(D)重載

12.java中定義字符串Strings="pzhu",下面操作可以取得字符

串長度的是()o

A.s.lengthQB.s.lengthC.s.sizeQD.

length(s)

解答:A

13.指出下列程序運行的結(jié)果(B)(很難)

publicclassExample{

Stringstr=newStringC'good");

char[]ch={'a','b','c');

publicstaticvoidmain(Stringargs[]){

Exampleex=newExampleQ;

ex.change(ex.str,ex.ch);

System.out.print(ex.str+"and");

System.out.print(ex.ch);

publicvoidchange(Stringstr,charch[]){

str="testok";

ch[O]='g';

A、goodandabc

B、goodandgbc

C、testokandabc

D、testokandgbc

14.下面代碼的運行結(jié)果為:(C)(較難)

importjava.io.*;

importjava.util.*;

publicclassfoo{

publicstaticvoidmain(String[]args){

Strings;

System.out.printin("s="+s);

A代碼得到編譯,并輸出“s=”

B代碼得到編譯,并輸出<<s=nuir,

C由于Strings沒有初始化,代碼不能編譯通過

D代碼得到編譯,但捕獲到NullPointException

15.關(guān)于以下程序段,正確的說法是(C)

1.Stringsl="abc"+"def";

2.Strings2=newString(si);

3.if(sl==s2)

4.System.out.println("==succeeded");

5.if(sl.equals(s2))

6.System.out.println(M.equals()succeeded");

A、行4與行6都將執(zhí)行

B、行4執(zhí)行,行6不執(zhí)行

C、行6執(zhí)行,行4不執(zhí)行

D、行4、行6都不執(zhí)行

16.Javaapplication中的主類需包含main方法,main方法的返

回類型是什么?(D)A、intB、float

C、doubleD、void

17.為一個boolean類型變量賦值時,可以運用(B)方式

A、boolean=1;

B、booleana=(9>=10);

C^booleana="真";

D、booleana==false;

18.表達式(ll+3*8)/4%3的值是(D)

A、31B、0C、ID、2

19.運算符優(yōu)先級別排序正確的是(A)(太難)

A、由高向低分別是:()、!、算術(shù)運算符、關(guān)系運算符、邏輯運算符、

賦值運算符;

B、由高向低分別是:()、關(guān)系運算符、算術(shù)運算符、賦值運算符、!、

邏輯運算符;

C、由高向低分別是:()、算術(shù)運算符、邏輯運算符、關(guān)系運算符、!、

賦值運算符;

D、由高向低分別是:()、!、關(guān)系運算符、賦值運算符、算術(shù)運算符、

邏輯運算符;

20.下列值不為true的表達式有(C)。

A、"john"=="john

B、"john".equals("john")

C、"john"="john"

D、"john".equals(newString("john"))

21、下面的方法,當(dāng)輸入為2的時候返回值是多少?(D)(很難)

publicstaticintgetValue(inti){

intresult=0;

switch(i){

case1:

result=result+i;

case2:

result=result+i*2;

case3:

result=result+i*3;

I

returnresult;

AOB2C4

DIO

答案:D

解析:留意這里case后面沒有加break,所以從case2起先始終往

下運行。

22、下面有關(guān)for循環(huán)的描述正確的是(A)

A、for循環(huán)體語句中,可以包含多條語句,但要用大括號括起來

B、for循環(huán)只能用于循環(huán)次數(shù)已經(jīng)確定的狀況

C、在for循環(huán)中,不能運用break語句跳出循環(huán)

D、for循環(huán)是先執(zhí)行循環(huán)體語句,后進行條件推斷

23、score是一個整數(shù)數(shù)組,有五個元素,已經(jīng)正確初始化并賦值,

細(xì)致閱讀下面代碼,程序運行結(jié)果是(B)

temp=score[0];

for(intindex=1;index<5;index++){

if(score[index]<temp){

temp=score[index];

|

}

A.求最大數(shù)B.求最小數(shù)C.找到數(shù)組最終一個元素D.編譯出

26、

2.2填空題

1、Java語言是一種完全的.面對對象_程序設(shè)計語言

2、Strings1="China”;intn=sl.length();n的值為_5—

3、在Java語言中,基本數(shù)據(jù)類型包括:—整數(shù)類型、—浮點類

型、__字符類型一和一布爾類型

17、在Java的基本數(shù)據(jù)類型中,char型接受Unicode編碼方案,

每個Unicode碼占用_2—字節(jié)內(nèi)存空間,這樣,無論是中文字符還是

英文字符,都是占用_2—字節(jié)內(nèi)存空間。

18、設(shè)x=2,則表達式(x++)/3的值是_0—。

20、設(shè)有數(shù)組定義:

intMyIntArray[]={10,20,30,40,50,60,70);

則執(zhí)行以下幾個語句后的輸出結(jié)果是:120o

intMyIntArray[]={10,20,30,40,50,60,70};

ints=0;

for(inti=0;i<MylntArray.length;i++)

if(i%2==1)

s+=MylntArray[i];

System.out.println(s);

21、數(shù)組對象的長度在數(shù)組對象創(chuàng)建之后,就—不會—變更。數(shù)組

元素的下標(biāo)總是從一。一起先。

22、對于數(shù)組由用母={{1,2,3},{4,5,6}}來說,t.length等于_2—,

t[0].length等于_3o

2.3簡答題

1、Java的基本數(shù)據(jù)類型有哪8種,每種類型的內(nèi)存空間分別是多少。

2.4綜合題

26、編程計算1。~2。的整數(shù)的平方值,將結(jié)果保存在一個數(shù)組中。

27、編寫一個程序使之從鍵盤讀入10個整數(shù)存入整型數(shù)組a中,并

輸出這10個整數(shù)的最大值和最小值。

importjava.util.Scanner;

publicclasslianxi30(

publicstaticvoidmain(Stringargs[]){

Scannertemp;

float[]sum=newfloat[11];

floatmax,min;

for(inti=0;i<10;i++){

System.outprintln("請輸入第一個數(shù)字(回車結(jié)束):");

temp=newScanner(System.zn);

Stringa=temp.nextLineQ;

sum[i]=Integer.parse/nda);//獲得輸入的字符串

}

max=sum[0];

min=sum[0];

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

{

if(max<sum[j])

max=sum[j];

elseif(min>sum[j])

min=sum[j];

System.OLzAprintln(max);

System.OLZ^.println(min);

}

}

31、假如我國經(jīng)濟以每年10%的速度保持穩(wěn)定增長,請編寫一個程序,

計算每年達到多少,多少年可以實現(xiàn)總量翻兩番。

classexA4_l{

publicstaticvoidmain(Stringargs[]){

inta=0;

doublei=0.10,sum=l;

while(sum<=4){

sum=(i+l)*sum;

a++;

System.out.println("第"+a+"年達到"+sum);

System.out.printing須要"+a+"年實現(xiàn)兩番");

第3章類和對象

3.1單項選擇題

1、下列關(guān)于變量的敘述哪個是錯的?()

A.實例變量是類的成員變量。

B.在方法中定義的局部變量在該方法被執(zhí)行時創(chuàng)建。

C.實例變量用關(guān)鍵字static聲明。

D.局部變量在運用前必需被初始化。

解答:C

2、在Java語言中,下列哪個包是編譯器自動導(dǎo)入的?()

A.java.appletB.java.lang

C.java.ioD.java.awt

解答:B

6、不允許作為類與類成員的訪問限制符的是()o

A.publicB.private

C.staticD.protected

解答:C

7、為AB類的一個無形式參數(shù)無返回值的方法method書寫方法頭,

使得運用類名AB作為前綴就可以調(diào)用它,該方法頭的形式為()o

A、staticvoidmethod()B、publicvoid

method()

C、finalvoidmethod()D、abstractvoid

method()

解答:A

8、可以在下面代碼段pointx處寫入的是?()

//pointx

publicclassInteresting(

//dosomething

}

A.Stringstr;

B.staticintPI=3.14;

C.publicclassMyClass{//dootherthing-

D.importjava.awt.*;

解答:D

9、Java供應(yīng)的許多類在不同的包中,運用下面哪個語句可以引入包

中的類。

A.packageB.include

C.importD.add

解答:C

11、已知A類被打包在packageA,B類被打包在packageB,且B

類被聲明為public,且有一個成員變量x被聲明為protected限制方式。

C類也位于packageA包,且繼承了B類。則以下說法正確的是:()

A、A類的實例不能訪問到B類的實例

B、A類的實例能夠訪問到B類一個實例的x成員

C、C類的實例可以訪問到B類一個實例的x成員

D、C類的實例不能訪問到B類的實例

解答:C(太難)

13、在Java中,關(guān)于final關(guān)鍵字的說法正確的是()

A、假如修飾變量,則一旦賦了值,就等同一個常量。

B、假如修飾類,則該類只能被一個子類繼承。

C、假如修飾方法,則該方法不能在子類中被覆蓋。

D、假如修飾方法,則該方法所在的類不能被繼承。

解答:A,C

14、關(guān)于構(gòu)造方法以下說法錯誤的是(D)o

(A)構(gòu)造方法名必需與類名一樣(B)構(gòu)造方法可以重載

(C)構(gòu)造方法是通過new來調(diào)用(D)每個類都必需編寫構(gòu)

造方法代碼

15、關(guān)于類的定義以下說法錯誤(B)。

(A)類定義運用class關(guān)鍵字(B)每個類中必需有一個main

方法

(C)一個包可以包含多個類(D)java中全部類都是Object類

的子類

16、在創(chuàng)建對象時必需(C)

A)先聲明對象,然后才能運用對象

B)先聲明對象,為對象支配內(nèi)存空間,然后才能運用對象

C)先聲明對象,為對象支配內(nèi)存空間,對對象初始化,然后才能

運用對象

D)上述說法都對

17、在調(diào)用方法時,若要使方法變更實參的值,可以(B)

A)用基本數(shù)據(jù)類型作為參數(shù)B)用對象作為參數(shù)

C)A和B都對D)A和B都不對

18、關(guān)于以下程序代碼的說明正確的是(D)

classHasStatic{

privatestaticintx=100;

publicstaticvoidmain(Stringargs[]){

HasStatichsl=newHasStatic();

hsl.x++;

HasStatichs2=newHasStatic();

hs2.x++;

hs1=newHasStatic();

hsl.x++;

HasStatic.x-

System.out.printin("x="+x);

}

}

A、5行不能通過編譯,因為引用了私有靜態(tài)變量

B、10行不能通過編譯,因為x是私有靜態(tài)變量

C、程序通過編譯,輸出結(jié)果為:x=103

D、程序通過編譯,輸出結(jié)果為:x=102

19、以下關(guān)于構(gòu)造函數(shù)的描述錯誤的是(A)。

A、構(gòu)造函數(shù)的返回類型只能是void型。

B、構(gòu)造函數(shù)是類的一種特殊函數(shù),它的方法名必需與類名相同。

C、構(gòu)造函數(shù)的主要作用是完成對類的對象的初始化工作。

D、一般在創(chuàng)建新對象時,系統(tǒng)會自動調(diào)用構(gòu)造函數(shù)。

20、Java中,在如下所示的Test類中,共有(C)個構(gòu)造方法。

publicclassTest{

privateintx;

publicTest(){x=35;}

publicvoidTest(doublef){This.x=(int)f;}

publicTest(Strings){}

I

A、OB、IC、2D、3

21、在Java中,關(guān)于構(gòu)造方法,下列說法錯誤的是(C)

A、構(gòu)造方法的名稱必需與類名相同

B、構(gòu)造方法可以帶參數(shù)

C、構(gòu)造方法不行以重載

D、構(gòu)造方法確定不能有返回值

22、在Java語言中,下列關(guān)于類的繼承的描述,正確的是(B)。

A、一個類可以繼承多個父類

B、一個類可以具有多個子類

C、子類可以運用父類的全部方法

D、子類確定比父類有更多的成員方法

23、分析選項中關(guān)于Java中this關(guān)鍵字的說法正確的是(A)

A、this關(guān)鍵字是在對象內(nèi)部指代自身的引用

B、this關(guān)鍵字可以在類中的任何位置運用

C、this關(guān)鍵字和類關(guān)聯(lián),而不是和特定的對象關(guān)聯(lián)

D、同一個類的不同對象共用一個this

24、在Java接口中,下列選項中有效的方法聲明是(A)。

A、publicvoidaMethodQ;

B、publicfinalvoidaMethodQ;

C^protectedvoidaMethodQ;

D、privatevoidaMethod();

25、下列選項中關(guān)于Java中super關(guān)鍵字的說法正確的是(A)。

A、super關(guān)鍵字是在子類對象內(nèi)部指代其父類對象的引用

B、super關(guān)鍵字不僅可以指代子類的干脆父類,還可以指代父類的

父類

C、子類通過super關(guān)鍵字只能調(diào)用父類的方法,而不能調(diào)用父類的

屬性

D、子類通過super關(guān)鍵字只能調(diào)用父類的屬性,而不能調(diào)用父類的

方法

3.2填空題

1、在Java程序中,通過類的定義只能實現(xiàn)—單重繼承—,但通

過接口的定義可以實現(xiàn)多—多重繼承—。

2、_抽象(abstract)—方法是一種僅有方法頭,沒有具體方法體和

操作實現(xiàn)的方法,該方法必需在抽象類之中定義。—final方法是不能

被當(dāng)前類的子類重新定義的方法。

3、面對對象程序設(shè)計的三個特征是____封裝、多態(tài)、繼承

4、Java是面對對象語言,類是客觀事物的.抽象,而對象是類的

.實例一o

5、假如在子類中想運用被子類隱藏的父類成員變量或方法,就可以運

用關(guān)鍵字一supero

6、Java中有一種叫作—構(gòu)造方法一的特殊方法用來對類的對象成員

進行初始化。

7、JAVA語言中供應(yīng)了兩種類型的字符串類來處理字符串,它們是

___$在111£和___StringBuffer類

8、Java語言中,全部的類都是—Object的子類,Java的窗口通

常是—JFrame__的子類,—抽象一類只能定義但不能被實例化,.最終

一類不能被繼承

9、一般Java程序的類體由兩部分組成:一部分是一屬性_,另一部分

是一方法一

1。、分別用—class_關(guān)鍵字來定義類,用_new__關(guān)鍵字來支配實例存

儲空間。

11、Java中類成員的限定詞有以下幾種:_private_public__,

protected____,_缺省__。其中,.public一的限定的范圍最大。類中

限定為—private—的成員,只能被這個類本身內(nèi)部訪問。

12、Java類中,假如類的定義者沒有顯式的定義任何構(gòu)造方法,系

統(tǒng)將自動供應(yīng)一個一無參默認(rèn).構(gòu)造方法。

13、在子類中定義與父類的相同的方法,若在多個子類中定義相同的方

法,則可以調(diào)用不同子類中的相同方法而實現(xiàn)不同的功能,這實現(xiàn)了程序運

行時的多態(tài)。

3.3簡答題

1.簡潔闡述方法的重載和方法的重寫之間的區(qū)分

解答:

重寫是子類的方法覆蓋父類的方法,要求方法名和參數(shù)都相同

重載是在同一個類中的兩個或兩個以上的方法,擁有相同的方法名,

但是參數(shù)卻不相同

2、簡述實例變量和類變量的區(qū)分。

解答:類變量也叫靜態(tài)變量,也就是在變量前加了static的變量;實

例變量也叫對象變量,即沒加static的變量;

區(qū)分在于:類變量是全部對象共有,其中一個對象將它值變更,其他

對象得到的就是變更后的結(jié)果;而實例變量則屬對象私有,某一個對象將

其值變更,不影響其他對象;

2、簡述實例方法和類方法的區(qū)分

解答:實例方法可以對當(dāng)前對象的實例變量進行操作,也可以對類變

量進行操作,實例方法由實例對象調(diào)用。但類方法不能訪問實例變量,只

能訪問類變量。類方法可以由類名干脆調(diào)用,也可由實例對象進行調(diào)用。

類方法中不能運用this或super關(guān)鍵字。

3、面對對象的三個基本特征是什么,分別簡潔介紹每個特征。

解答:三大特性是:封裝,繼承,多態(tài)。

封裝性就是把對象的屬性和服務(wù)結(jié)合成一個獨立的單位,并盡可能隱

藏對象的內(nèi)部微小環(huán)節(jié)。

特殊類的對象擁有其一般類的全部屬性與服務(wù),稱作特殊類對一般類

的繼承。

對象的多態(tài)性是指在一般類中定義的屬性或服務(wù)被特殊類繼承之后,

可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個屬性或服務(wù)

在一般類與其各個特殊類中具有不同的語義。

4、簡潔闡述成員變量和局部變量的區(qū)分。

解答:

1)成員變量在整個類內(nèi)都有效,局部變量只在定義它的方法內(nèi)有效。

2)成員變量又分為實例成員變量(簡稱實例變量)和類變量(也稱靜

態(tài)變量),假如成員變量的類型前面加上關(guān)鍵字static,這樣的成員變量

稱為類變量或靜態(tài)變量。

3)假如局部變量的名字與成員變量的名字相同,則成員變量被隱藏,

也就是說,這個成員變量在這個方法內(nèi)短暫失效。這時假如想在該方法內(nèi)

運用成員變量,必需運用關(guān)鍵字this。

5、簡述對象的引用和實體。

解答:當(dāng)用類創(chuàng)建一個對象時,類中的成員變量被支配內(nèi)存空間,這

些內(nèi)存空間稱為該對象的實體,而對象中存放著引用,以確保實體由該對

象操作運用。沒有實體的對象稱為空對象,空對象不能運用,即不能讓一

個空對象去調(diào)用方法產(chǎn)生行為。

6、簡述this關(guān)鍵字的意義,以與它在成員方法和構(gòu)造方法中如何運

用。

解答:this是Java的一個關(guān)鍵字,表示某個對象。this可以出現(xiàn)在

實例方法和構(gòu)造方法中,但不行以出現(xiàn)在類方法中。this可以出現(xiàn)在實例

方法和構(gòu)造方法中,但不行以出現(xiàn)在類方法中。this關(guān)鍵字出現(xiàn)在類的構(gòu)

造方法中時,代表運用該構(gòu)造方法所創(chuàng)建的對象。實例方法必需通過對象

來調(diào)用,當(dāng)this關(guān)鍵字出現(xiàn)在類的實例方法中時,代表正在調(diào)用該方法

的當(dāng)前對象。

成員函數(shù)中定義了和成員變量中相同的變量時,引用成員變量要用

this;構(gòu)造函數(shù)中調(diào)用同一個類的其他構(gòu)造函數(shù)時用thiSo

7、簡潔描述Java的參數(shù)傳值中的兩種方式,基本數(shù)據(jù)類型參數(shù)的傳

值和引用類型參數(shù)的傳值?

解答:在基本數(shù)據(jù)類型參數(shù)的傳值中,基本數(shù)據(jù)類型的參數(shù)向該參數(shù)

傳遞的值的級別不行以高于該參數(shù)的級別。

在引用類型參數(shù)的傳值中,Java的引用類型數(shù)據(jù)包括對象、數(shù)組和接

口,當(dāng)參數(shù)是引用類型時,“傳值''傳遞的是變量的引用而不是變量所引

用的實體。假如變更參數(shù)變量所引用的實體,就會導(dǎo)致原變量的實體發(fā)生

同樣的變更,但是假如變更參數(shù)的引用不會影響向其傳值的變量的引用。

8、基本數(shù)據(jù)類型和對象作為參數(shù)傳遞的不同?

解答:

(1)基本數(shù)據(jù)類型作為參數(shù)在方法中傳遞的是值傳遞。

(2)對象是引用傳遞,當(dāng)對象作為參數(shù)傳遞時,傳遞的是對象的地

址。

3.4綜合題

1、定義一個“點”(Point)類用來表示三維空間中的點,類體的成員

變量x,y,z分別表示三維空間的坐標(biāo)。類體中具有如下成員方法的定義:

1)構(gòu)造方法Point??梢陨删哂刑囟ㄗ鴺?biāo)的點對象。

2)setX(),setY(),setZ()為可以設(shè)置三個坐標(biāo)的方法。

3.)getDistance。為可以計算該點距離原點距離平方的方法。

解答:

classPoint{

doublex,y,z;

Point(double_x,double_y,double_z)

I

X=_x;

y=q;

z=_z;

)

voidsetX(double_x){

x=_x;

}

voidsetY(double_y){

y=_y;

)

voidsetZ(double_z){

z=_z;

doublegetDistance(){

return(x*x+y*y+z*z);

}

2、編寫一個Java應(yīng)用程序Test類,實現(xiàn)成員方法max(a,b)的重載。

具體要求如下:

a)編寫voidmax(inta,intb)成員方法,對兩個整數(shù)進行大小的比較,

輸出打印較大的那個整數(shù)。

b)編寫voidmax(floata,floatb)成員方法,對兩個float數(shù)進行大小的

比較,輸出打印較大的那個float數(shù)。

c)編寫voidmax(doublea,doubleb)成員方法,對兩個double數(shù)進

行大小的比較,輸出打印較大的那個double數(shù)。

publicclassTest{

voidmax(inta,intb){

System.out.println(a>b?a:b);

}

voidmax(floata,floatb){

System,out.printin(a>b?a:b);

voidmax(doublea,doubleb){

System.out.printin(a>b?a:b);

}

publicstaticvoidmain(String[]args){

Testt=newTest();

t.max(3,4);

}

}

3、編寫一個矩形類對數(shù)學(xué)中的矩形進行抽象描述,并具有方法可以計算

矩形的周長和面積,具體分為以下三個子任務(wù)完成。

(1)創(chuàng)建Rectangle類,添加屬性width、height,并定義構(gòu)造方法

Rectangle(double_width,double_height);

(2)在Rectangle類中添加兩種方法computCircum()和computAreaQ

分別計算矩形的周長和面積;

(3)編程利用Rectangle對象輸出一個30*40的矩形的周長和面積。

解答:

publicclassTestRectang{

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

Rectanglerecti=newRectangle(20,30);

System.oiztprintln(rect1putAreaQ);

System.outprintln(rect1putCircumQ);

}

}

classRectangle{

doublewidth,height;

Rectangle(){

width=0;

height=0;

}

Rectangle(double_width,double_height){

width=_width;

height=_height;

doublecomputAreaQ{

returnwidth*height;

}

doublecomputCircum(){

return2*(width+height);

第4章繼承、接口和內(nèi)部類

4.1單項選擇題

1、Java中用于定義接口的關(guān)鍵字是()

A、importB、package

C、classD、interface

解答:D

2、以下關(guān)于abstract的說法,正確的是()

A、abstract只能修飾類

B、abstract只能修飾方法

C、abstract類中必需有abstract方法

D、abstarct方法所在的類必需用abstract修飾

解答:D

3、下列哪種說法是正確的()

A、私有方法不能被子類覆蓋。

B、子類可以覆蓋超類中的任何方法。

C、覆蓋方法可以聲明自己拋出的異樣多于那個被覆蓋的方法。

D、覆蓋方法中的參數(shù)清單必需是被覆蓋方法參數(shù)清單的子集。

解答:A

4、關(guān)于類繼承的說法,正確的是()

A、Java類允許多重繼承

B、Java接口允許多繼承

C、接口和類都允許多繼承

D、接口和類都不允許多繼承

解答:B

5、關(guān)于抽象類,正確的是_____o

A.抽象類中不行以有非抽象方法

B.某個非抽象類的父類是抽象類,則這個子類必需重載父類的全

部抽象方法

C.可以用抽象類干脆去創(chuàng)建對象

D.接口和抽象類是同一個概念

解答:B

8、抽象類A和抽象類B的定義如下:

abstractclassA{

abstractintgetinfo();

}

publicclassBextendsA{

privateinta=0;

publicintgetinfo(){

returna;

}

publicstaticvoidmain(Stringargs[]){

Bb=newB();

System.out.printin(b.getinfo());

)

)

關(guān)于上述代碼說明正確的是()o

A.輸出結(jié)果為0B.通過編譯但沒有輸出任何結(jié)果

C.第5行不能通過編譯D.程序第2行不能通過編譯

解答:A

9、下面程序的運行結(jié)果是______

classex4_5_l1_A{

protectedstaticintcount=0;

publicex4_5_l1_A(){

count++;

I

f

I

J

classex4_5_l1_Bextendsex4_5_l1_A{

publicex4_5_l1_B(){

count++;

}

f

classex4_5_l1{

publicstaticvoidmain(Stringargs[]){

ex4_5_l1_Bx=newex4_5_l1_B();

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

A.count=1B.count=2

C.count=3D.count=4

解答:B

1。、設(shè)有下面兩個類的定義:

classPerson

{longid;//身份證號

Stringname;//姓名

}

classStudentextendsPerson

{intscore;//入學(xué)總分

intgetScore(){

returnscore;

|

}

問:類Person和類Student的關(guān)系是()

A、包含關(guān)系B、繼承關(guān)系

C、關(guān)聯(lián)關(guān)系D、無關(guān)系,上述類定義有語法錯誤

解答:B

11、以下程序代碼錯誤的是(B)。

abstractclassP{}

classAextendsP{}

abstractclassBextendsP{}

(A)Pp=newA();(B)Pp=newB();

(C)Aa=newA();(D)Pp=newP(){voidfoo(){1};

12、下面是People和Child類的定義和構(gòu)造方法,每個構(gòu)造方法都

輸出編號。在執(zhí)行newChild("mike")的時候都有哪些構(gòu)造方法被依次調(diào)

用?請選擇輸出結(jié)果(D)

classPeople{

Stringname;

publicPeople(){

System.out.print(l);

}

publicPeople(Stringname){

System.out.print(2);

this,name=name;

classChildextendsPeople{

Peoplefather;

publicChild(Stringname){

System.out.print(3);

this,name=name;

father=newPeople(name+":F");

}

publicChild(){

System.out.print(4);

A312B32C432D

132

13、選項中哪一行代碼可以替換題目中//addcodehere而不產(chǎn)生編

譯錯誤?(A)

publicabstractclassMyClass{

publicintconstlnt=5;

//addcodehere

publicvoidmethodQ{

}

}

Apublicabstractvoidmethod(inta);

Bconstlnt=constlnt+5;

Cpublicintmethod();

DpublicabstractvoidanotherMethod(){}

15、以下哪項是接口的正確定義?(D)

A、interfaceB{voidprint(){}}

B、abstractinterfaceB{voidprint()}

C、abstractinterfaceBextendsA1,A2〃A1、A2為已

定義的接口

{abstractvoidprint(){};}

D、interfaceB{voidprint();}

16、A派生出子類B,B派生出子類C,并且在Java源代碼中有如

下聲明:

1.AaO=newA();

2.Aal=newB();

3.Aa2=newC();

問以下哪個說法是正確的?(D)

A、只有第1行能通過編譯

B、第1、2行能通過編譯,但第3行編譯出錯

C、第1、2、3行能通過編譯,但第2、3行運行時出錯

D、第1行、第2行和第3行的聲明都是正確的

17、假設(shè)A類有如下定義,設(shè)a是A類的一個實例,下列語句調(diào)用哪

個是錯誤的?(C)

classA

{inti;

staticStrings;

voidmethod1(){}

staticvoidmethod2(){}

/I

A^System.out.println(a.i);B>a.methodl();

C、A.method1();D、A.method2()

18、以下關(guān)于繼承的敘述正確的是(A)。

A、在Java中類只允許單一繼承

B、在Java中一個類只能實現(xiàn)一個接口

C、在Java中一個類不能同時繼承一個類和實現(xiàn)一個接口

D、在Java中接口只允許單一繼承

19、以下關(guān)于抽象類和接口的說法錯誤的是(E)

A、抽象類在Java語言中表示的是一種繼承關(guān)系,一個類只能運用

一次繼承。但是一個類卻可以實現(xiàn)多個接口。

B、在抽象類中可以沒有抽象方法

C、實現(xiàn)抽象類和接口的類必需實現(xiàn)其中的全部方法,除非它也是抽

象類。接口中的方法都不能被實現(xiàn)

D、接口中定義的變量默認(rèn)是publicstaticfinal型,且必需給其初

值,所以實現(xiàn)類中不能重新定義,也不能變更其值。

E、接口中的方法都必需加上public關(guān)鍵字。

4.2填空題

1、在Java語言中全部的類都是干脆或間接地繼承.Object

類而得到的。

2、在Java中一個父類可以有—多一個子類,一個類只能有一——

個干脆父類。

3、Java中不能被實例化、只能被子類繼承的是—抽象類

4、當(dāng)子類中的變量或方法與父類的變量和方法重名時,子類的變量被

隱藏,子類中的方法被重載。此時,指向父類中的變量或方

法,則用super關(guān)鍵字實現(xiàn)。

5、用來定義一個類指定繼承父類的關(guān)鍵字是______extends,用來指

定接口的繼承的關(guān)鍵字是______implements

7、在已有類的基礎(chǔ)上構(gòu)造一個新的類,稱為類的繼承。

4.3簡答題

1、請舉例簡要說明JAVA語言的繼承機制有何特點?

解答:子類可以運用父類中的成員變量和方法,然后也可以添加自己

的屬性和方法。假如子類沒有構(gòu)造方法,則編譯器首先為子類添加一個無

參的構(gòu)造方法,然后調(diào)用父類的默認(rèn)構(gòu)造方法,假如子類有構(gòu)造方法,則

先調(diào)用父類的默認(rèn)構(gòu)造方法,再調(diào)用子類的構(gòu)造方法;假如父類中沒有默

認(rèn)構(gòu)造方法,則出錯。(太難)

2、什么是繼承?什么是多重繼承和單繼承?Java接受何種機制來實

現(xiàn)多重繼承?

解答:繼承是面對對象編程的一種特性,是保留原有類功能的前提下

拓展或改寫部分功能,實現(xiàn)代碼復(fù)用的方式。單繼承就是一個類只可以繼

承自一個父類,多繼承是指一個類可以同時繼承多個父類。java中運用的

是單繼承,也就是一個類有且只能有一個父類,java中可以運用接口實現(xiàn)

來實現(xiàn)類似多繼承的效果。

3、簡述super關(guān)鍵字的意義,以與如何運用。

解答:關(guān)鍵字super表示父類對象。通過在子類中運用super做前綴

可以引用被子類隱藏的父類變量或被子類重寫的父類方法。super用來引

用當(dāng)前對象的父類,雖然構(gòu)造方法不能夠繼承,但利用super關(guān)鍵字,子

類構(gòu)造方法中也可以調(diào)用父類的構(gòu)造方法。1)操作被隱藏的變量和方法⑵

運用super調(diào)用父類的構(gòu)造方法。

4、抽象類是什么,抽象方法是什么。

解答:抽象類就是不能運用new方法進行實例化的類,即沒有具體實

例對象的類。抽象類有點類似“模板”的作用,目的是依據(jù)其格式來創(chuàng)建

和修改新的類。對象不能由抽象類干脆創(chuàng)建,只可以通過抽象類派生出新

的子類,再由其子類來創(chuàng)建對象。

抽象方法就是以abstract修飾的方法,這種方法只聲明返回的數(shù)據(jù)類

型、方法名稱和所需的參數(shù),沒有方法體,也就是說抽象方法只須要聲明

而不須要實現(xiàn)。當(dāng)一個方法為抽象方法時,意味著這個方法必需被子類的

方法所重寫,否則其子類的方法照舊是abstract的。

4、接口是什么,以與它的用處體現(xiàn)在哪幾個方面。

解答:接口是抽象類的一種,只包含常量和方法的定義,而沒有變量

和方法的實現(xiàn),且其方法都是抽象方法。它的用處體現(xiàn)在下面幾個方面:

1)通過接口實現(xiàn)不相關(guān)類的相同行為,而無需考慮這些類之間的關(guān)系。2)

通過接口指明多個類須要實現(xiàn)的方法。3)通過接口了解對象的交互界面,

而無需了解對象所對應(yīng)的類。

5、什么是接口,什么是抽象類,接口和抽象類的區(qū)分?

解答:

抽象類就是不能運用new方法進行實例化的類,即沒有具體實例對象

的類。抽象類有點類似“模板”的作用,目的是依據(jù)其格式來創(chuàng)建和修改

新的類。對象不能由抽象類干脆創(chuàng)建,只可以通過抽象類派生出新的子類,

再由其子類來創(chuàng)建對象。

接口是抽象類的一種特殊形式,只包含常量和方法的定義,而沒有變

量和方法的實現(xiàn),且其方法都是抽象方法。

抽象層次不同,抽象類是對類的抽象,而接口是對行為的抽象。

跨域?qū)哟尾煌?,抽象類的跨域是具有相像的類,接口可以跨域不同?/p>

類。

設(shè)計層次不同,抽象類是自底向上抽象而來,子類抽象父類接口是自

頂向下設(shè)計的,無需知道子類。

6、接口的用處體現(xiàn)哪幾個方面?

解答:

通過接口實現(xiàn)不相關(guān)類的相同行為,而無需考慮這些類之間的關(guān)系。

通過接口指明多個類須要實現(xiàn)的方法。

通過接口了解對象的交互界面,而無需了解對象所對應(yīng)的類。

7、接口與實現(xiàn)類(具體類)關(guān)系:

解答:

多個無關(guān)的類可以實現(xiàn)同一個接口。

一個類可以實現(xiàn)多個無關(guān)的接口。

與繼承關(guān)系類似,接口與實現(xiàn)類之間存在多態(tài)性。

14、子類與父類的繼承關(guān)系中,什么是屬性隱藏?什么是方法重寫?

解答:隱藏是指當(dāng)父類和子類有相同名字的屬性的時候,父類的同名

變量形式上不行見了。但是實際還是存在的。

重寫是針對方法的,通常是父類的方法在子類中重新寫過。當(dāng)執(zhí)行子

類的實例得時候,實際運行的是子類的方法。在子類里面可以通過

super.method()來顯式的訪問。

15、子類會繼承父類的全部方法和屬性么?

解答:在同一個包中除private聲明外的方法都可以繼承。不在同一

個包中,只繼承protected和public聲明的方法。(太難了)

16、Java中的方法重寫(Overriding)和方法重載(Overloading)分別

是什么?

解答:Java中的方法重載發(fā)生在同一個類里面兩個或者是多個方法的

方法名相同但是參數(shù)不同的狀況。與此相對,方法重寫是說子類重新定義

了父類的方法。子類中重寫的方法和父類中被重寫的方法必需有相同的方

法名,參數(shù)列表和返回類型,只是方法體不同。

4.4綜合題

1、寫出一個類People,并由該類做基類派生出子類Employee和

Teachero其中People類具有name、age兩個愛惜成員變量,分別為

String類型、整型,且具有公有的getAge成員函數(shù),用于返回age變量

的值。Employee類具有愛惜成員變量empno為String類型,Teacher

類有teano為String類型和zc成員變量為String類型。

解答:

//People類:

publicabstractclassPeople(

protectedStringname;

protectedintage;

publicintgetAge(){

returnage;

}

}

//Employee類:

publicclassEmployeeextendsPeople{

protectedStringempno;

}

“Teacher類:

publicclassTeacherextendsPeople{

protectedStringteano;

protectedStringzc;

2、定義一個新的類Student類,繼承Person類。要求:

1)增加“school”屬性為String類型。

2)重載Student類的構(gòu)造方法,Student(Stringn,String1,String

school)o

3)重寫Person類的info。方法,增加school信息。

classPerson{

privateStringname;

privateStringlocation;

Person(Stringname,Stringlocation){

=name;

this.location=location;

}

publicStringinfo(){

return"name:"+name+"location:"+location;

解答:

溫馨提示

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

最新文檔

評論

0/150

提交評論