自考Java語言程序設計(一)課后習題及答案_第1頁
自考Java語言程序設計(一)課后習題及答案_第2頁
自考Java語言程序設計(一)課后習題及答案_第3頁
自考Java語言程序設計(一)課后習題及答案_第4頁
自考Java語言程序設計(一)課后習題及答案_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

自考Java語言程序設計(一)課后習題及答案

自考Java語言程序設計(一)第一章Java語言概述課后習題

一、Java語言概述

1.Java語言有哪些特點?

2.什么叫做類?什么叫做對象?

3.簡述Java的運行機制。

4.簡述Java應用程序的開發(fā)流程。

5.當初Sun公司發(fā)展Java的原因是

(a)要發(fā)展航空仿真軟件

(b)要發(fā)展人工智能軟件

(c)要發(fā)展消費性電子產品

6.Java是從哪種語言改進并重新設計?

(a)Ade

(b)C++

(c)Pascal

7.Java因為什么快速發(fā)展而走紅?

(a)個人計算機與網絡

(b)游戲軟件

(c)系統(tǒng)軟件

8.Java程序的種類有:

(a)內嵌于Web文件中,由瀏覽器來觀看的

(b)可獨立運行的

(c)服務器端的

9.Java是面向對象語言,對象是客觀事物的,對象與之是--對

應的,它是很具體的概念。

10.判斷:用Javac編譯Java源文件后得到代碼叫字節(jié)碼。()

參考答案

1.答:面向對象、簡單、平臺無關性、安全性、內存管理、分

布式應用、多線程、動態(tài)、解釋運行,高效能

2.答:在面向對象編程中,具體的客觀實體稱為對象,對象就

是數(shù)據(jù)加方法。對象在程序中是通過一種抽象數(shù)據(jù)類型來描述的,這

種抽象數(shù)據(jù)類型稱為類。類是對具有相同屬性和方法的一組相似對象

的抽象,或者說類是對象的模板

3.答:Java程序的運行必須經過編寫、編譯、運行三個步驟。

編寫是指在Java開發(fā)環(huán)境中進行程序代碼的輸入過程,最終形成后

綴名為Java源文件。編譯是指使用Java編譯器對源文件進行錯誤排

查的過程,編譯后將生成后綴名為.class的字節(jié)碼文件。運行是指使

用Java解釋器將字節(jié)碼文件翻譯成機器代碼,在cpu上運行并顯示

結果的過程。這一過程如圖所示。

4.Java應用程序的運行經過編寫、編譯、運行三個步驟。

第1步,編寫程序。使用記事本或其他軟件編寫程序的源代碼,

將源代碼保存為文件filename.]ava文件。

第2步,編譯程序。在MS-DOS命令窗口,將當前目錄轉換到

Java源程序所在的保存目錄;輸入“javame.java”形式的命令進行程

序編譯。

第3步,執(zhí)行程序。在同樣的命令窗口中輸入“javame”形式的

命令執(zhí)行程序。

完成了程序的開發(fā),查看相應t目錄,其中應該具有兩個文件,

分別是XXXX.java和XXXX.clasSo

5.c

6.b

7.a

8.AppletApplicationServlets

9.軟件模型

10.true

自考Java語言程序設計(一)第二章數(shù)據(jù)類型和流程控制課后習

二、數(shù)據(jù)類型和流程控制

1.現(xiàn)有語句:Strings="Example";則下面哪些語句是合法語

句?

A.s?>=3;B.s[3]="x";

C.inti=s.length();D.Stringt="For"+s;

E.s=s+10;

2.下面哪些是保留字?

A.runB.defaultC.implementD.import

3.下面聲明float變量的語句合法的有:

A.floatfoo=-1;B.floatfoo=1.0;

C.floatfoo=42el;D.floatfoo=2.02f;

E.floatfoo=3.03d;F.floatfoo=0x0123;

4.下面方法中的“返回類型無效”應該是什么?

publicclassRetumlt

return無效methodA(bytex,doubley){

return(short)x/y*2;

)

)

5.以下哪兩個表達式是等價的:

A.3/2B.3<2C.3*4

D.3?2E.3*2A2F.3?<2

6.指出正確的表達式

A、byte=128

B、Boolean=null;

C、longl=0xfffL;

D、double=0.9239d;

7.分析下列程序的執(zhí)行結果:

(1)publicclassTest{

publicstaticvoidmain(Stringargs[]){

inti=oxFFFFFFFl;

intj=-i;

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

)

)

(2)publicclassTest{

publicstaticvoidmain(String[]args){

System.out.println(6A3);

)

)

(3)publicclassFooBar{

publicstaticvoidmain(String[]args){

inti=0,j=5;

tp:

for(;;i++){

for(;;-j)

if(i>j)

breaktp;

System.out.println("i="+i+",j="+j);

)

(4)publicclassTest{

publicstaticvoidmain(){

inti=1,j=10;

do{

if(i++>-j)

continue;

}while(i<5);

System.out.println("i="+i+"j="+j);

)

)

(5)classValue{

publicinti=15;

)

publicclassTest{

publicstaticvoidmain(Stringargv[]){

Testt=newTest();

t.first();

)

publicvoidfirst(){

inti=5;

Valuev=newValue();

v.i=25;

second(v,i);

System.out.println(v.i);

)

publicvoidsecond(Valuev,inti){

i=0;

v.i=20;

Valueval=newValue();

v=val;

System.out.println(v.i+""+i);

)

)

8.選出合理的標識符

A、_sysl_lll

B、2mail

C、$change

D^class

9.判斷:一個方法最多能有一個return語句()

10.Java語言中一個Char類型的數(shù)據(jù)占用2個字節(jié)大小的內

存空間0

參考答案

1.cde

2.b,d

3.a,d,f

4.double

5.c,d

6.d

7.(1)c(2)5(3)i=0,j=-l

(4)i=5j=6(5)15020

8.ac

9.true

lO.ture

自考Java語言程序設計(一)第三章類與對象課后習題

三、類與對象

1.什么叫引用類型,對象是引用類型嗎?

2.什么是類成員,什么是實例成員?他們之間有什么區(qū)別?

3.判斷:數(shù)組、類和接口都是引用數(shù)據(jù)類型()

4.判斷:類A和類B位于同一個包中,則除了私有成員,類

A可以訪問類B的所有其他成員0

5.下面哪個修飾符修飾的變量是所有同一個類生成的對象共

享的()

A^publicB>privateC>staticD、final采集者退散

6.下面關于java中類的說法哪個是不正確的()

A、類體中只能有變量定義和成員方法的定義,不能有其他

語句。

B、構造函數(shù)是類中的特殊方法。

C、類一定要聲明為public的,才可以執(zhí)行。采集者退散

D、一個java文件中可以有多個class定義。

7.下列哪個類聲明是正確的0

AabstractfinalclassHl{…}

Babstractprivatemove(){…}

Cprotectedprivatenumber;

DpublicabstractclassCar{…}

8.下述哪些說法是正確的?(多選)

A、實例變量是類的成員變量

B、實例變量是用static關鍵字聲明的

C、方法變量在方法執(zhí)行時創(chuàng)建

D、方法變量在使用之前必須初始化

9.設計一個動物類,它包含動物的基本屬性。例如名稱、大

小、重量等,并設計相應的動作,例如跑、跳、走等。

10.設計一個長方形類,成員變量包括長和寬。類中有計算

面積和周長的方法,并有相應的set方法和get方法設置和獲得長和

寬。編寫測試類測試是否達到預定功能。要求使用自定義的包。

參考答案

1.答:引用類型是指該類型的標識符表示的是一片內存連續(xù)

地址的首地址。對象是引用類型。

2.答:Java中使用static修飾的變量和方法稱為類變量(或

稱靜態(tài)變量)和類方法(或稱靜態(tài)方法),沒用static修飾符的變量和

方法稱為實例變量和實例方法。

類成員是指該成員屬于這個類,由這個類所創(chuàng)建的所有對象

共同擁有,該成員僅在類的存儲單元中存在,這個類所創(chuàng)建的所有對

象中僅存儲一個指向該成員的引用。任何一個該類的對象改變了類

成員,其他對象同樣會發(fā)生改變。對于類成員既可以使用對象訪問,

也可以使用類名直接進行訪問,并且在類方法中只能訪問類變量,

而不能訪問實例變量。

實例成員是指該成員由每一個對象個體獨有,對象的存儲空

間中的確有一塊空間用來存儲該成員,不同對象的實例成員不同,任

何一個對象改變了實例成員,只會影響這個對象本身,其他對象中

的實例成員不會發(fā)生改變。對于實例成員只能通過對象來訪問,不能

通過類名進行訪問,在實例方法中既可以訪問實例變量,也可以訪

問類變量

3.true

4.true

5.C

6.C

7.D

8.ACD

9.答:

publicclassAnimal{

privateStringname;

privatedoubleweight;

privateintlength;

privateStringsex;

publicvoidrun(){

System.out.println("theanimalisrunning!");

)

publicvoidjump(){

System.out.println("theanimalisjumping!");

)

publicvoidwalk(){

System.out.println("theanimaliswalking!");

)

)

10.答:

packagemypackage.math;

classRectangle{

privateintlength;

privateintwidth;

publicRectangle(intlength,intwidth){

this.length=length;

this.width=width;

)

publicvoidset(intlength,intwidth){

this.length=length;

this.width=width;

)

publicvoidget(){

System.out.println("此長方形的長為"+length+"寬為"+width);

)

publicintgetLength(){

returnlength;

)

publicintgetWidth(){

returnwidth;

)

publicintcalculatePerimeter(){

return2*(length+width);

publicintcalculateArea(){

return(length*width);

)

publicvoidprint(){

System.out.println("此長方形的周長為

"+calculatePerimeter()+"面積為"+calculateArea());

)

)

classTest{

publicstaticvoidmain(String[]args){

Rectanglemyrectangle=newRectangle(15,10);

myrectangle.get();

myrectangle.print();

myrectangle.set(20,15);

System.out.println("長方形的長是"+myrectangle.getLength()+”

寬是"+myrectangle.getWidth());

myrectangle.print();

)

)

自考Java語言程序設計(一)第四章方法與構造函數(shù)課后習題

四、方法與構造函數(shù)

1.Java的訪問限定修飾符有幾種,各自的訪問權限是什么?

2.如何創(chuàng)建自己的包,如何引入包?

3.下面哪一個是類Myclass的構造函數(shù)?

classMyclass

publicvoidMyclassQ{}

publicstaticMyclass(){}

publicMyclass(){}

publicstaticvoidMyclassQ{}

)

4.判斷:類體中private修飾的變量在本類中能訪問,類生成

的對象也能訪問。()

5.判斷:一個類中,只能擁有一個構造器方法。()

6.Java中類成員的限定詞有以下幾種:private,public,

,O其中,的限定的范圍最大。

7、被關鍵字修飾的方法是不能被當前類的子類重

新定義的方法

8.設計Point類用來定義平面上的一個點,用構造函數(shù)傳遞

坐標位置。編寫測試類,在該類中實現(xiàn)Point類的對象。

9.編寫程序說明靜態(tài)成員和實例成員的區(qū)別。

10.設計雇員Employee類,記錄雇員的情況,包括姓名、年

薪、受雇時間,要求定義MyDate類作為受雇時間,其中包括工作的

年、月、日,并用相應的方法對Employee類進行設置。編寫測試類

測試Employee類。要求使用自己的包。

參考答案

1.答:Java的訪問限定修飾符有4種,分別使public>protected>

private和默認修飾符。用public修飾的類或成員擁有公共作用域,

表明此類或類的成員可以被任何Java中的類所訪問,是最廣泛的作

用范圍。用protected修飾的變量或方法擁有受保護作用域,可以被同

一個包中所有的類及其他包中該類的子類所訪問。用private修飾的

變量或方法擁有私有作用域,只能在此類中訪問,在其他類中,包括

該類的子類也是不允許訪問的,private是最保守的作用范圍。沒有

任何修飾符擁有默認訪問權限(友好訪問權限),表明此類或類的成

員可以被同一個包中的其它類訪問本文

2.答:創(chuàng)建自己的包只要將package語句作為Java源文件的

第一句就可以了。例

packagemyPackage;聲明創(chuàng)建了一個名為myPackage的包。

Java使用import語句來引入包及其中的類。例如import

myPackage.*;就引入了myPackage包中所有的類。

3.答:publicMyclass(){}是類Myclass的構造函數(shù)。

4.false

5.false

6.friendly>protected>public

7.Private

8.答:

classPoint

{intx,y;

Point(inta,intb)

{x=a;

y=b;

)

)

publicclassA

{publicstaticvoidmain(String[]args)

{Pointpl,p2;

pl=newPoint(10,10);

p2=newPoint(23,35);

)

)

9.答:

classStaticTest{

inti=5;

staticintj=5;

voidprint(){

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

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

)

staticvoidclassprint(){

//System.out.println("i="+i);

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

)

)

classTest{

publicstaticvoidmain(String[]args){

//System.out.println(StaticTest.i);

System.out.println(StaticTest.j);

//StaticTest.print();

Staticlest.classprint();

Staticlestst=newStaticlest();

System.out.println(st.j);

System.out.println(st.j);

st.print();

st.classprint();

)

)

10.答:

packagemypackage.employee;

classMyDate{

privateintyear;

privateintmonth;

privateintday;

publicMyDate(intyear,intmonth,intday){

this.year=year;

this.month=month;

this.day=day;

)

publicintgetYear(){

returnyear;

)

)

publicclassEmployee{

privateStringname;

privatedoublesalary;

privateMyDatehireDay;

publicEmployee(Stringname,doublesalary,MyDateday){

=name;

this.salary=salary;

hireDay=day;

publicvoidprint(){

System.out.println(name+""+salary+""+hireYear());

)

publicinthireYear(){

returnhireDay.getYear();

)

)

classTestEmployee{

publicstaticvoidmain(String[]args){

Employeea=newEmployee("李明",20000,new

MyDate(2000,10,l));

Employeeb=newEmployee("王強",24000,new

MyDate(1995,8,12));

a.print();

b.print();

)

)

自考Java語言程序設計(一)第五章類的繼承課后習題

五、類的繼承

1.什么是繼承?什么是父類?什么是子類?繼承的特性可給面向

對象編程帶來什么好處?什么是單重繼承?什么是多重繼承?

2.觀察下面的程序片斷,指出其中的父類和子類,以及父類

和子類的各個域和方法。

classSuperClass

(

intdata;

voidsetData(intnewData)

(

data=newData-

)

intgetData()

(

returndata-

)

)

classSubClassextendsSuperClass

(

intsuhData;

voidsetSubData(intnewData)

suhData=newData;

intgetData()

(

returnsubData;

)

)

3.“子類的域和方法的數(shù)目一定大于等于父類的域和方法的

數(shù)目”,這種說法是否正確?為什么?

4.在Java程序中,通過類的定義只能實現(xiàn)單重繼承0

5.下列哪些說法是正確的?

A、Java語言只允許單一繼承

B、Java語言只允許實現(xiàn)一個接口

C、Java語言不允許同時繼承一個類并實現(xiàn)一個接口

D、Java語言的單一繼承使得代碼更加可靠

6.Java中所有類都是類的子類。

7.請寫出下面程序的運行結果。

publicclassTestextendsTT{

publicvoidmain(Stringargs[]){

Testt=newTest("Tom");

)

publicTest(Strings){

super(s);

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

)

publicTest(){

this("IamTom");

)

}

classTT{

publicTT(){

System.out.println("Whatapleasure!");

)

publicTT(Strings){

this();

System.out.println("Iam"+s);

)

)

結果:________

8.父類的成員在子類中的訪問權限由決定。

9.對象的使用包括引用對象的成員變量和方法。通過運算符

就能實現(xiàn)對對象成員變量的訪問和對象

10.Java是面向對象語言,對象是客觀事物的,對象與之是一

一對應的,它是很具體的概念。

參考答案:

1.答:繼承是面向對象程序設計中兩個類之間的一種關系。

當一個類獲取另一個類中所有非私有的數(shù)據(jù)和操作的定義作為它自

己的部分或全部成分時,就稱這兩個類之間具有繼承關系。被繼承的

類稱為父類或超類,繼承了父類或超類的所有數(shù)據(jù)和操作的類稱為子

類。

面向對象程序設計中的繼承,可使得程序結構更加清晰,降

低了編碼和維護的工作量。如果一個類只能有一個父類,則這種繼承

關系稱為單重繼承;如果一個類可以有多個父類,則這種繼承關系稱

為多重繼承。

2.答:

父類SuperClass

父類的域data

父類的方法setData(),getData()

子類SubClass

子類的域data,subData

子類的方法setSubData。,setData(),getData()采集者退散

3.答:這種說法是錯誤的,因為子類不一定能繼承父類的所

有域和方法,它只能繼承所有非私有的域和方法。如果子類在繼承之

外自己定義的域和方法數(shù)目小于父類中私有成員的數(shù)目,則子類的域

和方法的數(shù)目小于父類的域和方法的數(shù)目I

4.true

5.AD

6.Object

7.答:

Whatapleasure!

IamTom

Howdoyoudo?

8.訪問權限修飾符

9.

10.軟件模型

自考Java語言程序設計(一)第六章重載與多態(tài)課后習題

六、重載與多態(tài)

1.判斷:接口中的所有方法都沒有被實現(xiàn)。0

2.方法重載是指()

A.兩個或兩個以上的方法取相同的方法名,但形參的個數(shù)或

類型不同

B.兩個以上的方法取相同的名字和具有相同的參數(shù)個數(shù),但

形參的類型可以不同

C.兩個以上的方法名字不同,但形參的個數(shù)或類型相同

D.兩個以上的方法取相同的方法名,并且方法的返回類型相

3.什么是方法的覆蓋?方法的覆蓋與域的隱藏有何不同?與方

法的重載有何不同?

4.解釋this和super的意義和作用。

5.什么是多態(tài)?面向對象程序設計為什么要引人多態(tài)的特性?

使用多態(tài)有什么優(yōu)點?

6.Java程序如何實現(xiàn)多態(tài)?有哪些方式?

7.根據(jù)下面的要求編程實現(xiàn)復數(shù)類ComplexNumbero

(1)復數(shù)類ComplexNumber的屬性

,m_dRealPart實部,代表復數(shù)的實數(shù)部分。

?m_dlmaginPart虛部,代表復數(shù)的虛數(shù)部分。

(2)復數(shù)類ComplexNumber的方法

?ComplexNumber()構造方法,將實部、虛部都置為0。

,ComplexNumber(doubler,doublei)構造方法,創(chuàng)建復數(shù)對象

的同時完成復數(shù)的實部、虛部的初始化;r為實部的初值,i為虛部的

初值。

?getRealPart()獲得復數(shù)對象的實部。

,getlmaginaryPart。獲得復數(shù)對象的虛部。

,setRealPart(doubled)把當前復數(shù)對象的實部設置為給定的形

參的數(shù)字。

setlmaginaryPart(doubled)把當前復數(shù)對象的虛部設置為給定

形參的數(shù)字。

?complexAdd(ComplexNumberc)當前復數(shù)對象與形參復數(shù)對

象相加,所得的結果也是復數(shù)值,返回給此方法的調用者。

,complexAdd(doublec)當前復數(shù)對象與形參實數(shù)對象相加,

所得的結果仍是復數(shù)值,返回給此方法的調用者。

,complexMinus(ComplexNumberc)當前復數(shù)對象與形參復數(shù)

對象相減,所得的結果也是復數(shù)值,返回給此方法的調用者。

8.什么是接口?為什么要定義接口?接口與類有何異同

9.一個類如何實現(xiàn)接口?實現(xiàn)某接口的類是否一定要重載該

接口中的所有抽象方法?

10.接口是否可以被繼承?閱讀下面的代碼,試寫出

Subinterface中的抽象方法。

interfaceSupinterface

(

publicabstractintsupMethod();

)

interfaceSubinterfaceextendsSupinterface

(

publicabstractstringsubMethod();

)

參考答案:

1.true

2.A

3.答:子類重新定義父類中已經存在的方法,稱為方法的覆

蓋。注意:方法覆蓋與域的隱藏不同。子類重新定義父類已有的域,

并不能完全取代它從父類那里繼承的同名的域,這個域仍然占用子

類的內存空間,在某些情況下會被使用;而當子類重新定義父類的方

法時,從父類那里繼承來的方法將被新方法完全取代,不再在子類

的內存空間中占一席之地。與方法的覆蓋不同,重載不是子類對父類

同名方法的重新定義,而是在一個類中定義了同名的不同方法。

4.答:關鍵字this指代當前類的當前對象,關鍵字s叩ei?指

代當前類的直接父類對象。

5.答:一個類中存在多個同名的方法,稱為多態(tài)。把抽象功

能和目的相同,而具體實現(xiàn)因不同情況而異的方法命名為同名方法,

符合面向對象程序設計中抽象、提升概念,封裝、隱藏細節(jié)的特點,

從而提高了程序的簡潔性和可讀性,降低了類和程序模塊直接的相互

耦合和依賴。

6.答:Java程序通過覆蓋和重載兩種方式來實現(xiàn)多態(tài)。覆蓋

是子類重新定義父類中已有的方法,重載是在一個類內部定義與已存

在的方法同名但是參數(shù)列表不同的方法。

7.答:

publicclassch5_e5_12

publicstaticvoidmain(StringargslJ)

ComplexNumbercNumber_l=

newComplexNumber(3,-5);

ComplexNumbercNumber_2=

newComplexNumber(2,2);

doubled=10.0;

System.out.println(cNumber_l.toString()+"加"

+cNumber_2.toString()+"等于"

+cNumber_plexAdd(cNumber_2).toString());

System.out.println(cNumber_l.toString()+"力口"

+d+"等于"

+cNumber_plexAdd(d).toStringO);

System.out.println(cNumber_l.toString()+"減"

+cNumber_2.toString()+"等于"

+cNumber_plexMinus(cNumber_2).toString());

System.out.println(cNumber_l.toString()+"減"

+d+"等于"

+cNumber_plexMinus(d).toString());

System.out.println(cNumber_l.toString()+"乘"

+cNumber_2.toString()+"等于"

+cNumber_plexMulti(cNumber_2).toString());

System.out.println(cNumber_l.toString()+”乘

+d+"等于"

+cNumber_plexMulti(d).toString());

)

)

classComplexNumber

(

〃域

privatedoublem_dRealPart;

privatedoublem_dImaginPart;

〃構造方法

ComplexNumber()

(

m_dRealPart=0.0;

m_dImaginPart=0.0;

)

ComplexNumber(doubler,doublei)

(

m_dRealPart=r;

m_dImaginPart=i;

)

ComplexNumber(ComplexNumberc)

m_dRealPart=c.getRealPart();

m_dImaginPart=c.getImaginaryPart();

)

//get,set方法

doublegetRealPart()

(

returnm_dRealPart;

)

doublegetImaginaryPart()

(

returnm_dImaginPart;

)

voidsetRealPart(doubled)

(

m_dRealPart=d;

)

voidsetImaginaryPart(doubled)

(

m_dImaginPart=d;

)

〃復數(shù)運算方法

ComplexNumbercomplexAdd(ComplexNumberc)

returnnewComplexNumber(

this.m_dRealPart+c.getRealPart(),

this.m_dImaginPart+c.getImaginaryPart());

)

ComplexNumbercomplexAdd(doublec)

(

returnnewComplexNumber(

this.m_dRealPart+c,this.m_dImaginPart);

)

ComplexNumbercomplexMinus(ComplexNumberc)

(

returnnewComplexNumber(

this.m_dRealPart-c.getReaIPart(),

this.m_dImaginPart-c.getImaginaryPart());

)

ComplexNumbercomplexMinus(doublec)

returnnewComplexNumber(

this.m_dRealPart-c,this.m_dImaginPart);

ComplexNumbercomplexMulti(ComplexNumberc)

returnnewComplexNumber(

this.m_dRealPart*c.getRealPart()

-this.m_dImaginPart*c.getImaginaryPart(),

this.m_dRealPart*c.getImaginaryPart()

+this.m_dImaginPart*c.getRealPart());

)

ComplexNumbercomplexMulti(doublec)

(

returnnewComplexNumber(

this.m_dRealPart*c,this.m_dImaginPart*c);

)

//toStringO

publicStringtoStringO

(

return"("+m_dRealPart+"+"

+m_dImaginPart+"i"+

)

)

8.答:接口是用來實現(xiàn)類間多重繼承功能的結構。接口與類

相似,但是接口中只能包括常量和抽象方法。定義接口相當于定義了

一組抽象的功能、屬性集合,可以使了ava程序的類層次結構更加合

理,并實現(xiàn)多重繼承。

9.答:使用關鍵字implements可以定義類實現(xiàn)某接口。實

現(xiàn)某接口的類如果不是抽象類,則需要通過重載來實現(xiàn)該接口中的所

有抽象方法;如果這個類是抽象類,則它可以不必實現(xiàn)該接口中的所

有抽象方法。

10.答:接口可以被繼承。

Subinterface中的抽象方法有:publicabstractintsupMethod();

和publicabstractstringsubMethodQ;兩個。

自考Java語言程序設計(一)第七章Java常用類庫介紹課后習

七、Java常用類庫介紹

1.指出下列陳述是對還是錯,并做出解釋。

(1)當String對象用==比較時一,如果String包括相同的值

則結果為true。

(2)一個String類的對象在其創(chuàng)建后可被修改。

2.對于下列描述,各寫出一條語句完成要求的任務

(1)比較si中的串和s2中的串的內容的相等性;

(2)用+=向串si附加串;

(3)判斷si中串的長度;

3.說明capacity。與length。用法上的差異?

4.如果ch為StringBuffer對象,ch="JavaApple",下列結果

為何?

(1)ch.insert(3/p')(2)ch.append("Basic")

(3)ch.setlength(5)(4)ch.reverse()

5.Math類中提供用來常數(shù)n和e的靜態(tài)屬性分別是什么?

6.下面關于Vector類的說法正確的是()

(1)類Vector在java.util包中。

(2)一個向量(Vector)對象存放的是一組有序的對象。

(3)一個向量(Vector)對象大小可以根據(jù)存放的元素個數(shù)

的增加而自動增加。

(4)一個向量(Vector)對象中每個元素可以是不同類型的

對象。

7.有三個字符串,編寫程序找出其中最大者。

8.編寫一個程序,設定一個有大小寫字母的字符串,先將字

符串的大寫字符輸出,再將字符串中的小寫字符輸出。

9.設定5個字符串,要求只打印那些以字母“b”開頭的串,

編寫程序完成。

10.設定一個有大小寫字母的字符串和一個查找字符,使用

類String方法IndexOf。來判斷在該字符串中該字符出現(xiàn)的次數(shù)。

參考答案

1.答:

(1)錯。用==操作符比較String對象實際上是判斷它們在

內存中是否為同一對象,并不是判斷它們的值是否相同。

(2)錯。String類的對象是常量。它們被創(chuàng)建后不可被修改。

2.答:

(1)sl.equals(sl,s2);

(2)sl+=s2;

(3)sl.length();

3.答:capacity()返回字符串對象的當前緩沖區(qū)的長度,length()

返回字符串對象字符的長度。

4.答:

(1)結果:JavpaApplet

(2)結果:JavpaAppletBasic

(3)結果:ch長度變?yōu)?

(4)結果:apvaJ

5.答:PLE

6.答:⑶

7.

publicclassmaxi

publicstaticvoidmain(Stringargs[])

Stringsl="HelloJava";

Strings2="JavaApplet";

Strings3="Java";

Strings;

if(sl.compareTo(s2)<0)

s=s2;

elses=sl;

if(pareTo(s3)<0)

s=s3;

Systrm.out.println("big="+s);

)

)

8.

publicclassout

(

publicstaticvoidmain(StringargslJ)

(

Stringsl="HelloJava";

StringBufferbufup=newStringBuffer();

StringBufferbuflow=newStringBuffer();

for(int1=0;I

{if(s1.charAt(i)<97)

{bufup.append(sl.charAt(i));

bufup.append('');

)

else{

buflow.append(sl.charAt(i));

buflow.append(");

)

)

System.out.println("s1="+sl);

System.out.println("uppercase="+bufup);

System.out.println("lowercase="+buflow);

)

)

9.

publicclassprin_b

{publicstaticvoidmain(Stringargs[J)

(

Stringsl="hello";

Strings2="bee";

Strings3="java";

Strings4="brove";

Strings5="bag";

if(sl.indexOf("b')==0)

System.out.println(s1);

if(s2.indexOf('b')==0)

System.out.println(s2);

if(s3.indexOf('b')==0)

System.out.println(s3);

if(s4.indexOf("b')==0)

System.out.println(s4);

if(s5.indexOf('b')==0)

System.out.println(s5);

)

)

10.

publicclassppp

(

publicstaticvoidmain(StringargslJ)

(

Stringsl="abcdefghi";

intnum=0;

for(inti=0;i

{i=sl.indexof('e',i);

num++;

System.out.print("sl="+sl+"e=");

if(num==0)

System.out.println("nofound");

elseSystem.out.println(num);

)

自考Java語言程序設計(一)第八章Java異常處理及輸入輸出

流簡介課后習題

八、Java異常處理及輸入輸出流簡介

1.列出5個常見的異常。

2.寫出Java語言的異常處理機制的優(yōu)點。

3.為什么異常處理技術不應該用于常規(guī)的程序控制?

4.引起異常產生的條件是什么?

5.異常沒有被捕獲將會發(fā)生什么?

6.編寫一個程序,以說明catch(Exceptione)如何捕獲各種

異常。

7.下面的代碼段中finally語句塊會被執(zhí)行嗎?

publicclassExceptionExam3

publicstaticvoidmain(String[]args)

(

try

(

int[]a=newint[3];

System.exit(O);

)

catch(ArrayIndexOutOfBoundsExceptione)

{System.out.println("發(fā)生了異常");}

finally

{System.out.println("Finally");}

)

)

8.throws的作用是什么?

9.應在程序的什么地方使用異常處理?

10.下面的代碼有什么錯誤嗎?

classExceptionExam{,,,}

thrownewExceptionExam();

11.異常類型匹配的處理方式。程序功能:首先輸出“這是

一個異常處理的例子”,然后在你程序中主動地產生一個

ArithmeticException類型被0除而產生的異常,并用catch語句捕獲

這個異常。最后通過ArithmeticException類的對象e的方法

getMessage給出異常的具體類型并顯示出來。

12.根據(jù)所給創(chuàng)建自定義異常類的使用格式,編寫一個自定

義異常的小程序。

13.什么叫流?流式輸入輸出有什么特點?

14.Java流被分為字節(jié)流、字符流兩大流類,兩者有什么區(qū)

別?

15.File類有哪些構造函數(shù)和常用方法?

16.利用文件輸入輸出流編寫一個實現(xiàn)文件拷貝的程序,源

文件名和目標文件名通過命令行參數(shù)傳入。

17.編寫一個程序,在當前目錄下創(chuàng)建一個子目錄test,在這

個新創(chuàng)建的子目錄下創(chuàng)建一個文件,并把這個文件設置成只讀。

18.位置指針的作用是什么?RandomAccessFile類提供了哪

些方法實現(xiàn)對指針的控制?

19.編寫一個程序,從鍵盤輸入一串字符,統(tǒng)計這串字符中

英文字母、數(shù)字、其他符號的字符數(shù)。

20.編寫一個程序,從鍵盤輸入一串字符,從屏幕輸出并將

其存入a.txt文件中。采集者退散

21.編寫一個程序,從鍵盤輸入10個整數(shù),并將這些數(shù)據(jù)排

序后在標準輸出上輸出。

參考答案

I.答:內存耗盡、數(shù)組下標超出邊界、被0除、非法的方法

參數(shù)、算法溢出處。

2.答(1)Java通過面向對象的方法進行異常處理,把各種

異常事件進行分類,體現(xiàn)了良好的層次性,提供了良好的接口,這種

機制對于具有動態(tài)特性的復雜提供了強有力的控制方式。(2)Java

的異常處理機制使得處理異常的代碼和“常規(guī)”代碼分開,減少了代

碼的數(shù)量,增強了程序的可讀性。(3)Java的異常處理機制使得異

常事件可以沿調用棧自動向上傳播,而不是C語言中通過函數(shù)的返

回值來傳播,這樣可以傳遞更多的信息,并且簡化了代碼的編寫。(4)

由于把事件當成事件處理,利用類的層次性我們可以把多個具有相同

父類的異常統(tǒng)一處理,也可以區(qū)分不同的異常分別處理,使用非常靈

活。

3.答:a.異常處理用于不經常發(fā)生但通常導致程序終止的

情況,因此要求編程人員為編譯器的優(yōu)化執(zhí)行實現(xiàn)異常處理。b.常

規(guī)控制結構的控制流程通常比異常的更為清晰、交流更高。c.在發(fā)

生異常,并且沒有釋放異常發(fā)生之前分配的資源時,堆棧是展開的,

所以會出現(xiàn)一些問題。d.“額外的”異常會妨礙真正錯誤類型的異常。

這種使程序員更難以跟蹤大量的異常。

4.答:異常產生的方式有3種。第一種是在某些內部錯誤時,

Java虛擬機可以產生異常,該異常不在你的程序控制范圍內,通常不

作處理。第二種是由程序代碼中的錯誤引起,這種異常需要你的程序

處理。第三種是通過使用throw語句手動生成的異常。

5.答:未捕獲的異常最終會導致程序非正常終止。

6.publicclassExceptionExam

publicstaticvoidmain(String[]args)

inti=0;

i=3/i;〃將產生算術異常。

)

catch(ArithmeticExceptione)〃找到了匹配的異常,執(zhí)行該catch

塊。

System.out.println("發(fā)生了ArithmeticException異常)

)

catch(AarryIndexOutOfBoundsExceptione)〃不是匹配的異常,

且不會再捕獲

//異常,如果發(fā)生數(shù)組索引超出范圍所產生的異常,將執(zhí)行該

catch塊。

System.out.println("發(fā)生了AarrylndexOutOfBoundsException

異常)

catch(Exceptione)

〃前兩個catch塊均無法捕獲try塊中發(fā)生的異常時,才會執(zhí)

行該catch塊。

(

System.out.println("發(fā)生了異常");

)

finally

{System.out.println("執(zhí)行dFinally");}

)

)

7.答:無論是出于何種原因,只要執(zhí)行離開try/catch代碼塊,

就會執(zhí)行finally代碼塊。即無論try是否正常結束,都會執(zhí)行finally

定義的最后的代碼。如果try代碼塊中的任何代碼或它的任何catch

語句從方法返回,也會執(zhí)行finally代碼塊。但本題中在try代碼塊

中執(zhí)行了“System.exit(O);”語句,執(zhí)行了這一語句后,Java虛擬機

(JVM)將被終止。那么finally語句塊一定不會被執(zhí)行。

8.答:在某些情況下,如果一個方法產生自己不處理或無法

處理的異常,它就必須在throws子句中聲明該異常。

9.答:通常,可以采用兩種方式來報告錯誤:返回值和異常。

在Java中異常處理很常用,雖然返回錯誤代碼在某些情況下是一種

有效的方式,但是異常處理可以提供強大的結構化方法來處理異常。

所以需要處理代碼中的錯誤時就可以采用異常的方法進行處理。

10.答:ExceptionExam不是繼承(擴展)Throwable的子類,

只有Throwable的子類可以由throw拋出。所以,這一段代碼會出錯。

11.

publicclassExceptionExam1

(

publicstaticvoidmain(String[]args)

(

try

{inti=0;

i=3/i;

)

catch(ArithmeticExceptione)

(

System.out.println("異常是:"+e.getMessage());

)

finally

(

System.out.println("finally語句被執(zhí)行");

)

}

注意:如果在catch語句中聲明的異常類是Exception,catch

語句也能正確地捕獲,這是因為Exception是ArithmeticException的

父類。如果不能確定會發(fā)生哪種情況的異常,那么最好指定catch的

參數(shù)為Exception,即說明異常的類型為Exception0

12.

classExcplextendsException

()

classExcp2extendsExcpl

()

publicclassExceptionExam7

(

publicstaticvoidmain(String[]args)throwsException

(

try

(

thrownewExcp2();

)

catch(Excp2e)

System.out.println("catchl");

thrownewExcpl();

catch(Excp1e)

System.out.println("catch2");

thrownewException();

)

catch(Exceptione)

(

System.out.println("catch3");

)

finally

(

System.out.println("finally");

)

)

)

說明:自定義異常類,關鍵是選擇繼承的超類一一必須是

Exception或者其子類。用異常代表錯誤,而不要再使用方法返回值。

13.答:所謂流是指同一臺計算機或網絡中不同計算機之間

有序運動著的數(shù)據(jù)序列,Java把這些不同來源和目標的數(shù)據(jù)都統(tǒng)一抽

象為數(shù)據(jù)流。數(shù)據(jù)流可分為輸入流和輸出流,輸入流代表從其他設備

流入計算機的數(shù)據(jù)序列,輸出流代表從計算機流向外部設備的數(shù)據(jù)序

列。

流式輸入輸出的特點是數(shù)據(jù)的獲取和發(fā)送沿數(shù)據(jù)序列的順序

進行,即每一個數(shù)據(jù)都必須等待排在它前面的數(shù)據(jù),等前面的數(shù)據(jù)讀

入或送出之后才能被讀寫。所以流和隊列一樣,只能以“先進先出”

的方式對其中的數(shù)據(jù)進行讀寫,而不能隨意選擇讀寫的位置。

14.答:兩者都作為Object類的直接子類,基本輸入流(無

效Stream)和基本輸出流(Outputstream)是處理以8位字節(jié)為基本

單位的字節(jié)流類;Reader和Writer類是專門處理16位字符流的類。

15.答:構造函數(shù)有:

(1)publicFile(Stringpathname):創(chuàng)建一個對應于參數(shù)

pathname的File類對象。參數(shù)pathname是包含目錄和文件名的字符

串。如果沒有文件名,則代表目錄。

(2)publicFile(Stringparent,Stringchild):該構造函數(shù)將

pathname分成兩部分parent和child,參數(shù)parent表示目錄或文件所

在路徑,參數(shù)child表示目錄或文件名稱。

(3)publicFile(Fileparent,Stringchild):該構造函數(shù)與上面

一個不同在于將parent的參數(shù)類型由String變?yōu)镕ile,代表parent是

一個已經創(chuàng)建的File類文件對象(指向目錄)。

常用方法有:

(1)publicbooleancanWrite():返回文件是否可寫。

(2)publicbooleancanRead():返回文件是否可讀。

(3)publicbooleancreateNewFile():當文件不存在時創(chuàng)建文

件。

16.

importjava.io.*;

classCopyFile{

publicstaticvoidmain(String[]args){

Stringfilel,file2;

intch=0;

try

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論