Java語(yǔ)言程序設(shè)計(jì)(自考) 習(xí)題及解答_第1頁(yè)
Java語(yǔ)言程序設(shè)計(jì)(自考) 習(xí)題及解答_第2頁(yè)
Java語(yǔ)言程序設(shè)計(jì)(自考) 習(xí)題及解答_第3頁(yè)
Java語(yǔ)言程序設(shè)計(jì)(自考) 習(xí)題及解答_第4頁(yè)
Java語(yǔ)言程序設(shè)計(jì)(自考) 習(xí)題及解答_第5頁(yè)
已閱讀5頁(yè),還剩103頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一章Java概述

一、單項(xiàng)選擇題

1.若Java程序中公有類的名字是OneApp,則保存該程序的文件名是【】

A.Oncapp.javaB.Oncapp.classC.OncApp.javaD.OncApp.class

答案:Co

保存Java源程序的文件名要與公有類的名字一致,包括大小寫(xiě)也要完全相同,且文件名的

后綴是.java。一個(gè)源程序文件中最多只能有一個(gè)公有類c

2.Java程序OneApp.java編譯后的類文件名是【】

A.Oncapp.javaB.Oncapp.classC.OneApp.javaD.OneApp.class

答案:Do

Java源程序經(jīng)編譯后,生成的類文件的名字與原來(lái)的名字相同,后綴是.class。

3.Java語(yǔ)言的解釋器是【】

A.JVMB.javac.exeC.java.exeD.JDK

答案:Co

Java語(yǔ)言的編譯器是javac.cxc,解釋器是java.cxc。JVM是Java虛擬機(jī),JDK是軟件開(kāi)發(fā)

工具包。

4.下列選項(xiàng)中,不屬于Java語(yǔ)言特點(diǎn)的是【】

A.類型定義B.解釋執(zhí)行C.與平臺(tái)無(wú)關(guān)D.多線程

答案:A。

C語(yǔ)言中使用typedef進(jìn)行類型定義,在Java中已經(jīng)去掉了。另外三個(gè)選項(xiàng)都是Java的特

點(diǎn)。

5.下列關(guān)于Java程序的敘述中,正確的是【】

A.Java程序必須配合HTML文件才能執(zhí)行

B.JVM解釋執(zhí)行Java源程序

C.Java程序中可以使用指針

D.Java程序生成的字節(jié)碼文件與平臺(tái)無(wú)關(guān)

答案:Do

Java程序在經(jīng)過(guò)編譯且正確后,可以使用Java命令直接執(zhí)行,配合HTML文件才能執(zhí)行的

是Applet。解釋執(zhí)行的不是Java源程序,是源程序經(jīng)編譯后生成的字節(jié)碼文件。Java中已

經(jīng)沒(méi)有指針這個(gè)語(yǔ)法成分了。

6.下列選項(xiàng)中,不是Java程序主函數(shù)main。前面的修飾符的是【】

A.classB.staticC.voidD.public

答案:Ao

main。函數(shù)前面的修飾符通常是:publicstaticvoid,不包括class。class關(guān)鍵字用在類定義的

第一行中,即類頭中。main。不是類,是類中的函數(shù)。main。前三個(gè)修飾符的次序可梢做變

化,參見(jiàn)教材第一章第三節(jié)中的內(nèi)容。

7.下列概念中,屬于面向?qū)ο笳Z(yǔ)言重要概念和機(jī)制之一的是【】

A.方法調(diào)用B.模塊C.繼承D.結(jié)構(gòu)化

答案:Co

方法調(diào)用、模塊、結(jié)構(gòu)化都不僅僅是面向?qū)ο笳Z(yǔ)言中的概念,在面向過(guò)程的語(yǔ)言中也有這

些概念,并且它們并不體現(xiàn)面向?qū)?象的特點(diǎn)。而繼承概念在面向過(guò)程的語(yǔ)言中是沒(méi)有的,

這是面向?qū)ο笳Z(yǔ)言的特點(diǎn)。

二、填空題

1.假設(shè)Java程序保存在文件MyTest.java中,則編譯這個(gè)程序的命令是。

答案:javacMyTest.javao

javac是Java的編譯器,javac的后面是要編譯的源文件名,而且是帶后綴名的全名。

2.類TesW經(jīng)Java編譯程序編譯后,產(chǎn)生的文件是。

答案:字節(jié)碼文件Testll.dass。

源文件中的每個(gè)類編譯后都生成一個(gè)類文件。文件名是類名,后綴是.class。

3.JVM的全稱是o

答案:Java虛擬機(jī),英文是JavaVirtualMachine。

4.Java程序主函數(shù)main。前面的修飾符是_____。

答案:publicstaticvoido

這三個(gè)關(guān)鍵字的次序可以略有不同。

5.Java源文件經(jīng)編譯后生成的二進(jìn)制文件稱為o

答案:字節(jié)碼文件。

字節(jié)碼文件是類文件。參見(jiàn)教材第一章第一節(jié)中的內(nèi)容。

6.編寫(xiě)好的Java源程序在計(jì)算機(jī)上運(yùn)行需依次經(jīng)歷兩人階段,分別是和解彈執(zhí)

行。

答案:編譯。

參見(jiàn)教材第一章第三節(jié)中的內(nèi)容。

7.公有類MyFirstTest所在的文件經(jīng)Java編譯程序編譯后,產(chǎn)生的文件是。

答案:MyFirstTest.classo

三、簡(jiǎn)答題

1.請(qǐng)簡(jiǎn)要敘述Java語(yǔ)言的特點(diǎn)。

解答:Java是通用的、面向?qū)ο蟮恼Z(yǔ)言,并具有分布性、安全性和健壯性等特點(diǎn)。具

體表現(xiàn)在以下方面。

(1)語(yǔ)法簡(jiǎn)單,功能強(qiáng)大

Java語(yǔ)言的語(yǔ)法非常像C++,同時(shí)去掉了C++中不常用且容易出錯(cuò)的地方,Java解釋

器只占用很少的內(nèi)存,適合在各種類型的機(jī)器上運(yùn)行。

(2)與平臺(tái)無(wú)關(guān)

Java語(yǔ)言一個(gè)非常重要的特點(diǎn)就是與平臺(tái)的無(wú)關(guān)性,Java虛擬機(jī)(JavaVirtualMachine,

簡(jiǎn)稱JVM)是實(shí)現(xiàn)這一特點(diǎn)的關(guān)鍵。

Java編譯器將Java程序編譯成虛擬機(jī)能夠識(shí)別的字節(jié)碼(bytecode)。字節(jié)碼就是虛擬

機(jī)的機(jī)器指令,它與平臺(tái)無(wú)關(guān),有統(tǒng)一的格式,不依賴于具體的硬件環(huán)境,只運(yùn)行在JVM

上。在任何安裝Java運(yùn)行時(shí)環(huán)境的系統(tǒng)上,都可以執(zhí)行這些代碼。JVM在執(zhí)行字節(jié)只文件

時(shí),把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令執(zhí)行。所以Java程序在不同的平臺(tái)上運(yùn)行時(shí),

不需要重新編譯。

Java語(yǔ)言規(guī)定了統(tǒng)一的數(shù)據(jù)類型,有嚴(yán)格的語(yǔ)法定義,在任何平臺(tái)上,同一種數(shù)據(jù)類型

是?致的,為Java程序跨平臺(tái)的無(wú)縫移植提供了很大的便利。

(3)解釋編譯兩種運(yùn)行方式

Java程序可以經(jīng)編譯器得到字節(jié)碼。在現(xiàn)在的Java版本中又加入了編譯功能(即just

intime編譯器,簡(jiǎn)稱JIT編譯器),JIT編譯器將字節(jié)碼轉(zhuǎn)換成本機(jī)的機(jī)器代碼,然后可以

以較高速度執(zhí)行,使得執(zhí)行效率大幅度提而。

(4)多線程

Java內(nèi)置了語(yǔ)言級(jí)多線程功能,提供現(xiàn)成的類Thread,只要繼承這個(gè)類就可以編寫(xiě)多

線程的程序,可使用戶程序并行執(zhí)行。

(5)動(dòng)態(tài)執(zhí)行兼有豐富的API文檔及類庫(kù)

Java執(zhí)行代碼是在運(yùn)行時(shí)動(dòng)態(tài)載入的,程序可以自動(dòng)進(jìn)行版本升級(jí)。在網(wǎng)絡(luò)環(huán)境下,可

用于瘦客戶機(jī)架構(gòu),減少維護(hù)工作。Java為用戶提供了詳盡的API文檔說(shuō)明,Java開(kāi)發(fā)工

具包中的類庫(kù)包羅萬(wàn)象,類庫(kù)與時(shí)俱進(jìn),隨時(shí)更新,增加的新方法和其他實(shí)例,不會(huì)影響到

原有程序的執(zhí)行。

2.為什么說(shuō)Java語(yǔ)言是平臺(tái)無(wú)關(guān)的?

解答:一般的高級(jí)語(yǔ)言程序在不同的平臺(tái)上運(yùn)行時(shí),需要針對(duì)本計(jì)算機(jī)機(jī)器指令集而編

譯成不同的目標(biāo)文件。而JVM屏蔽了具體平臺(tái)的差異。Java編譯器將Java程序編譯成虛擬

機(jī)能夠識(shí)別的字節(jié)碼(bytecode)。字節(jié)碼就是虛擬機(jī)的機(jī)器指令,它與平臺(tái)無(wú)關(guān),有統(tǒng)一的

格式,不依賴于具體的硬件環(huán)境,只運(yùn)行在JVM上。在任何安裝Java運(yùn)行時(shí)環(huán)境的系統(tǒng)上,

都可以執(zhí)行這些代碼。JVM在執(zhí)行字節(jié)碼文件時(shí),把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令

執(zhí)行。所以Java程序在不同的平臺(tái)上運(yùn)行時(shí),不需要重新編譯。

Java語(yǔ)言規(guī)定了統(tǒng)一的數(shù)據(jù)類型,有嚴(yán)格的語(yǔ)法定義,在任何平臺(tái)上,同一種數(shù)據(jù)類型

是一致的,為Java程序跨平臺(tái)的無(wú)縫移植提供了很大的便利。

3.什么是Java虛擬機(jī)?

解答:Java虛擬機(jī)(JavaVirtualMachine,簡(jiǎn)稱JVM)是,臺(tái)虛擬計(jì)算機(jī),是通過(guò)在實(shí)

際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)的。不同的操作系統(tǒng)有不同的虛擬機(jī),它類似

于一個(gè)小巧而高效的CPU,是實(shí)現(xiàn)Java語(yǔ)言平臺(tái)無(wú)關(guān)性的保證。

【延伸閱讀】Java虛擬機(jī)規(guī)范中給出了JVM的定義:JVM是在一臺(tái)直正的機(jī)器卜用軟

件方式實(shí)現(xiàn)的一臺(tái)假想機(jī)。JVM使用的代碼存儲(chǔ)在.class文件中。JVM的某些指令很像真正

的CPU指令,包括算術(shù)運(yùn)算、流控制和數(shù)組元素訪問(wèn)等。

JVM的具體實(shí)現(xiàn)包括:指令集(等價(jià)于CPU的指令集)、寄存器組、類文件格式、棧、

垃圾收集堆、內(nèi)存區(qū)。

Java虛擬機(jī)規(guī)范提供了編譯所有Java代碼的硬件平臺(tái)。因?yàn)榫幾g是針對(duì)假想機(jī)的,所

以該規(guī)范能讓Java程序獨(dú)立于平臺(tái)。它適用于每個(gè)具體的硬件平臺(tái),以保證能運(yùn)行為JVM

編譯的代碼。JVM不但可以用軟件實(shí)現(xiàn),而且可以用硬件實(shí)現(xiàn)。

JVM的代碼格式為壓縮的字節(jié)碼,因而效率較面。由JVM字節(jié)碼表示的程序必須保持

原來(lái)的類型規(guī)定“Java主要的類型檢查是在編譯時(shí)由字節(jié)碼校瞼器完成的°Java的任何解釋

器必須能執(zhí)行符合JVM定義的類文件格式的任何類文件。

Java虛擬機(jī)規(guī)范對(duì)運(yùn)行時(shí)數(shù)據(jù)區(qū)域的劃分及字節(jié)內(nèi)的優(yōu)化并不做嚴(yán)格的限制,它們的

實(shí)現(xiàn)依平臺(tái)的不同而有所不同。JVM的實(shí)現(xiàn)叫做Java運(yùn)行時(shí)系統(tǒng)或運(yùn)行時(shí)環(huán)境(Runlime

Environment),簡(jiǎn)稱為運(yùn)行時(shí)。Java運(yùn)行時(shí)必須遵從Java虛擬機(jī)規(guī)范,這樣,Java編譯器生

成的類文件才可被所有Java運(yùn)行時(shí)系統(tǒng)下載。嵌入了Java運(yùn)行時(shí)系統(tǒng)的應(yīng)用程序,就可以

執(zhí)行Java程序了。目前有許多操作系統(tǒng)和瀏覽器都嵌入了Java運(yùn)行時(shí)環(huán)境。

4.查閱API文檔,列出JavaAPI文檔中4個(gè)包名。

解答:從JavaAPI文檔中選出了4個(gè)比較常用的包:java.awt'java.lang^java.utik

javax.swingo編程時(shí)會(huì)用到這4個(gè)包,后續(xù)章節(jié)中也會(huì)提及。

5.查閱API文檔,列出java.lang中4個(gè)類。

解答:從java.lang包中選出了常用的4個(gè)類:Math、String、SystemThread<>編程時(shí)

會(huì)用到這4個(gè)類,后續(xù)章節(jié)中也會(huì)提及。

6.查閱API文檔,列出java.awt.event中4個(gè)接口。

解答:java.awt.evenl是處理事件的包,選出4個(gè)常月接口:IiemLislener、KeyListener>

MouseListenersMouseListenero講授事件一節(jié)時(shí)會(huì)提及。

7.查閱API文檔,列出java.lang.Malh類中4個(gè)常用方法。

解答:java.lang.Math類中包含了許多常用函數(shù),選出4個(gè)常用方法如下。

staticintabs(inta):返回int型值a的絕對(duì)值。

staticdoublemax(doublea,doubleb):返回兩個(gè)double型值a、b中的較大者。

staticdoublepow(doublea,doubleb):返回a的b次塞的值。

staticdoublerandom():返回大于等于0.0且小于1.0的一個(gè)正的double型值。

8.查閱API文檔,列出javaJang.String類中4個(gè)常用方法°

解答:java.lang.SEng是處理字符串的類,選出4個(gè)常用方法如下。

charcharAt(intindex):返回由index指定的索引處的字符。

Stringconcat(Stringstr):將指定字符串str添加在本串的最后。

booleanequals(ObjectanObject):將本串與指定對(duì)象anObject進(jìn)行比較。

intindexOf(Stringstr):返回指定子串sir在本串中第一次出現(xiàn)的索引。

9.查閱API文檔,列出java.util.Random類中2個(gè)常用方法英

解答:javauiLRandom類是用來(lái)生成偽隨機(jī)數(shù)的類。選出2個(gè)常用方法如下。

doublenextDouble():根據(jù)本隨機(jī)數(shù)生成器,從0.0到1.0之間、均勻分布的double型偽

隨機(jī)數(shù)序列中,返回下一個(gè)偽隨機(jī)數(shù)。

intnextlnt(intbound):根據(jù)本隨機(jī)數(shù)生成器,從0(含)到指定值bound(不含)之間、

均勻分布的int型偽隨機(jī)數(shù)序列中,返回一個(gè)偽隨機(jī)數(shù)。

10.查閱API文檔,列出java.awt.Color類中2個(gè)構(gòu)造方法。

解答:java.awt.Color是用來(lái)處理顏色的類。選出2個(gè)常用方法如下。

Color(floatr,floatg,floatb):使用指定的范圍在(0.0-1.0)間的紅色、綠色和藍(lán)色值r,g,b,

創(chuàng)建一個(gè)不透明的sRGB顏色。

Color(intr,inig,intb):使用指定的范圍在(0-255)間的紅色、綠色和藍(lán)色值rgb,創(chuàng)

建一個(gè)不透明的sRGB顏色。

第二章數(shù)據(jù)和表達(dá)式

一、單項(xiàng)選擇題

1.以下選項(xiàng)中,能作為Java語(yǔ)言關(guān)鍵字的字符串的是【】

A.defineB.typeC.includeD.switch

答案:Do

dehne可以進(jìn)行宏定義,是C語(yǔ)言中預(yù)處理命令中的一種,在Java中已經(jīng)丟棄。C語(yǔ)言中

使用include語(yǔ)句包含.h文件,Java中使用的是import語(yǔ)句。switch用在多重分支語(yǔ)包中。

參看教材第三章第二節(jié)的內(nèi)容。

2.以下標(biāo)識(shí)符中,不是Java語(yǔ)言關(guān)鍵字的是【】

A.waitB.newC.longD.switch

答案:Ao

使用new調(diào)用類的構(gòu)造方法來(lái)創(chuàng)建對(duì)象。long表示長(zhǎng)整型類型。switch是多分支語(yǔ)句,其用

法參見(jiàn)教材第三章第三節(jié)的內(nèi)容。

3.以下字符串中,能作為Java程序中的標(biāo)識(shí)符的是【】

A.VaiB.OK#C.2ValD.catch

答案:A。

OK#中含有特殊字符#。2Val是以數(shù)字2開(kāi)頭。catch是關(guān)鍵字。它們都不能用作標(biāo)識(shí)符。

4.以下字符串中,能作為Java程序變量名的是【】

A.defaultB.finalC.longD.CASE

答案:Do

變量名必須是一個(gè)合法的標(biāo)識(shí)符,CASE是全大寫(xiě)的,全小寫(xiě)的case是關(guān)鍵字,兩者是不

相同的。default用在多重分支語(yǔ)句中,final用在異常處理語(yǔ)句中。long表示長(zhǎng)整型類型。

5.下列選項(xiàng)中,能作為Java語(yǔ)言注釋的是【】

A.從/*開(kāi)始直到行尾B.從〃開(kāi)始直到行尾

C.從/*開(kāi)始直到**結(jié)束D.從/**開(kāi)始直到行尾

答案:Bo

Java程序中的注釋,如果是以/*開(kāi)頭的,則必須以*/結(jié)尾。所以選項(xiàng)A不正確,它沒(méi)有結(jié)束

標(biāo)記。類似的,選項(xiàng)D也是沒(méi)有結(jié)束標(biāo)記*/。選項(xiàng)C的結(jié)束標(biāo)記符號(hào)不正確。

6.標(biāo)識(shí)符MAIN不能用作【】

A.類名B.接口名C.程序名D.主函數(shù)名

答案:De

Java程序中,主函數(shù)名必須是main,且全小寫(xiě)。MAIN是正確的標(biāo)識(shí)符,可以用作類名、

接口名及程序名。

7.不屬于Java基本數(shù)據(jù)類型的是【】

A.記錄型B.整型C.浮點(diǎn)型D.布爾型

答案:Ao

記錄型是C語(yǔ)言中由程序員通過(guò)typedef定義的,Java語(yǔ)言中除了整型、浮點(diǎn)型、布爾型等

基本數(shù)據(jù)類型外,程序員僅能定義類類型(由class標(biāo)識(shí))和接口(由interface標(biāo)識(shí))。

8.以下數(shù)據(jù)類型轉(zhuǎn)換中,必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換的是【】

A.int-*charB.short-*longC.float—doubleD.byte-*int

答案:Ao

ini比char的位數(shù)多,所以不能進(jìn)行自動(dòng)類型轉(zhuǎn)換,必須進(jìn)行強(qiáng)制類型梏換。選項(xiàng)B、C和

D都是由位數(shù)少的類型轉(zhuǎn)換為位數(shù)多的類型,可以自動(dòng)完成。

9.以下數(shù)據(jù)類型轉(zhuǎn)換中,必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換的是【】

A.long-*byteB.short-*floatC.inl-*longD.by(e-*short

答案:Ao

10.以下選項(xiàng)中,不是轉(zhuǎn)義字符的是【】

A.\u06lB.\tC.\14lD.\u0061

答案:Ao

選項(xiàng)B是水平制表符,選項(xiàng)C和D表示的都是字符a。'后面是3位八進(jìn)制數(shù)?!痋if后面必

須是4位十六進(jìn)制數(shù)。

二、填空題

1.用來(lái)聲明Java布爾變量(邏輯變量)的保留字是。

答案:boolean(>

2.方法內(nèi)定義的變量稱作。

答案:自動(dòng)變量,或是局部變量/臨時(shí)變量/棧變量。

自動(dòng)變量需要由程序員為其初始化。

3.Java邏輯與和邏輯或運(yùn)算符有一個(gè)特殊的功能,當(dāng)左側(cè)操作數(shù)能決定表達(dá)式的值時(shí),跳

過(guò)右側(cè)操作數(shù)的運(yùn)算。這個(gè)功能是o

答案:短路操作。

4.一個(gè)byte類型的操作數(shù)和一個(gè)int類型的操作數(shù)進(jìn)行運(yùn)算,結(jié)果的類型是。

答案:int。

不同類型的量進(jìn)行混合運(yùn)算時(shí),要先轉(zhuǎn)換為同一種類型,然后再進(jìn)行運(yùn)算。通常是位數(shù)少

的類型轉(zhuǎn)換為位數(shù)多的類型,byle類型的操作數(shù)要先轉(zhuǎn)換為ini類型的,進(jìn)行運(yùn)算后的類型

也為int類型的。

5.當(dāng)不同數(shù)值類型的數(shù)據(jù)進(jìn)行運(yùn)算時(shí),表示范圍較小的類型轉(zhuǎn)換為表示范圍較大的類型的

轉(zhuǎn)換稱作。

答案:自動(dòng)類型轉(zhuǎn)換。

對(duì)「整數(shù)類型,位數(shù)少則表示范圍較小,位數(shù)多則表示范圍較大。對(duì)于?浮點(diǎn)數(shù)類型也是如

此。而int型是32位,long型是64位,相應(yīng)地,float是32位,double是64位。它們之

間,整數(shù)的表示范圍小于浮點(diǎn)數(shù)的表示范圍。整型轉(zhuǎn)為浮點(diǎn)型也是自動(dòng)進(jìn)行的。

6.當(dāng)不同數(shù)值類型的數(shù)據(jù)進(jìn)行運(yùn)算時(shí),表示范圍較大的類型轉(zhuǎn)換為表示范圍較小的類型的

轉(zhuǎn)換稱作O

答案:強(qiáng)制類型轉(zhuǎn)換。

不符合自動(dòng)類型轉(zhuǎn)換規(guī)則的數(shù)據(jù)進(jìn)行混合運(yùn)算時(shí),如果需要進(jìn)行類型轉(zhuǎn)換,必須標(biāo)注目標(biāo)類

型,進(jìn)行強(qiáng)制類型轉(zhuǎn)換。

7.表達(dá)式“45&20”的十進(jìn)制值是o

答案:4o

45的二進(jìn)制表示為101101,20的二進(jìn)制表示為10100,兩個(gè)數(shù)進(jìn)行位與運(yùn)算,即對(duì)應(yīng)位進(jìn)

行與運(yùn)算,兩個(gè)位都為1時(shí)結(jié)果為1,其余為0。101101&10100=000100,即是4c

8.表達(dá)式1==1?>32;的值是0

答案:true。

移位運(yùn)算符>?的優(yōu)先級(jí)高于比較運(yùn)算符==,所以先計(jì)算1?>32。對(duì)于ini型量,移位操

作的位數(shù)對(duì)32取模,即1>>>32不移位,結(jié)果仍是I。這個(gè)結(jié)果再與1進(jìn)行比較,相等,

所以結(jié)果是true。

三、簡(jiǎn)答題

1.Java支持的數(shù)據(jù)類型有哪些?列出Java語(yǔ)言中所有的基本數(shù)據(jù)類型。

解答:Java支持的數(shù)據(jù)類型分為兩大類,一類是基本數(shù)據(jù)類型,另一類是復(fù)合數(shù)據(jù)類

型。基本數(shù)據(jù)類型共有8種,分為4小類,分別是邏輯型、字符型、整型和浮點(diǎn)型。復(fù)合

數(shù)據(jù)類型包括數(shù)組、類和接口。

邏輯類型或稱布爾類里使用boolean表示,字符類型使用char表示,整數(shù)類型共有4

種,分別是:byte(1字節(jié))、short(2字節(jié))、ini(4字節(jié))及1011g(8字節(jié))。浮點(diǎn)數(shù)共有

兩種類型,分別是:?jiǎn)尉雀↑c(diǎn)數(shù)float(4字節(jié))及雙精度浮點(diǎn)數(shù)double(8字節(jié))。

【延伸閱讀】Java中定義的各種數(shù)據(jù)類型占用固定的內(nèi)存長(zhǎng)度,與當(dāng)前系統(tǒng)的軟硬件

環(huán)境無(wú)關(guān)。例如,int型整數(shù)總是32位的,而不管是在Linux、Windows還是Android環(huán)境

下。這個(gè)特點(diǎn)體現(xiàn)了Java的平臺(tái)無(wú)關(guān)性。另外Java還為每種數(shù)據(jù)類型都預(yù)定義了一個(gè)默

認(rèn)值,以保證在任何情況下對(duì)變量的取值都是正確的。這個(gè)特點(diǎn)體現(xiàn)了Java的安全穩(wěn)定

性。一個(gè)char表示一個(gè)Unicode字符。每一個(gè)Unicode字符可用\uxxxx,表示,其中xxxx

是任意的一個(gè)16位無(wú)符號(hào)整數(shù),即4位卜六進(jìn)制數(shù),范圍為。?65535。char類型的常量

值必須用一對(duì)單引號(hào)(‘‘)括起來(lái)。例如,B的Unicode值為\u0042、

byle表示的數(shù)的范圍為-128?127,short表示的數(shù)的范圍為-32768?32767,ini表示的

數(shù)的范圍為-231?23」,long表示的數(shù)的范圍為?263?26」。

整型常量可用十進(jìn)制、八進(jìn)制或十六進(jìn)制形式表示,以I?9開(kāi)頭的數(shù)為十進(jìn)制數(shù),以

0開(kāi)頭的數(shù)為八進(jìn)制數(shù),以O(shè)x開(kāi)頭的數(shù)為十六進(jìn)制數(shù)。Java中4種整型量都足有符號(hào)為。

float表示的數(shù)的范圍約為1.4e,45?3.4C+38,double表示的數(shù)的范圍約為4.9e'324^

l.8e+308o

2.Java中常用的運(yùn)算符有哪幾類?每類列出幾個(gè),并說(shuō)明其含義。

解答:運(yùn)算符有算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符,每類列出3個(gè)。

此外還有幾個(gè)特殊的運(yùn)算符。如表2-1所示。

表2-1部分運(yùn)算符及其含義

類別運(yùn)算符運(yùn)算符含義

+加法

算術(shù)運(yùn)算符減法

++加1

<小于

關(guān)系運(yùn)算符>=大于等于

==等于

&&邏輯與

邏輯運(yùn)算符II邏輯或

J邏輯非

&位與

位運(yùn)算符A位異或

?左移

new對(duì)象實(shí)例

+=字符串連接賦值

特殊運(yùn)算符

?:條件運(yùn)算符

1=或賦值

3.Java中運(yùn)算符優(yōu)先級(jí)是如何定義的?舉例說(shuō)明。

解答:Java語(yǔ)言將全部運(yùn)算符按從高到低劃分了15個(gè)等級(jí),每個(gè)等級(jí)中包含少見(jiàn)一個(gè)

多則十余個(gè)的運(yùn)算符。比如,數(shù)組下標(biāo)運(yùn)算符,后綴形式的加1和減1運(yùn)算符具有最高優(yōu)先

級(jí),擴(kuò)展賦值運(yùn)算符具有最低優(yōu)先級(jí),乘法、除法運(yùn)算符的優(yōu)先級(jí)高于加法、減法運(yùn)算符的

優(yōu)先級(jí)等。

在對(duì)一個(gè)表達(dá)式進(jìn)行計(jì)算時(shí),如果表達(dá)式中含有多人運(yùn)算符,則要按運(yùn)算符的優(yōu)先順序

從高向低依次進(jìn)行,同級(jí)運(yùn)算符則根據(jù)結(jié)合律從左向右或從右向左進(jìn)行°括號(hào)可以改變運(yùn)算

次序。各運(yùn)算符的優(yōu)先次序見(jiàn)教材的表2-8。

4.從下列字符串中選出正確的Java關(guān)鍵字:

abstract,bit,boolean,case,character,comment,double,else,end,endif,extend,false,final,

finally,float,for,generic,goto,if,implements,import,inner,instanceof,interface,line,long,

loop,native,new,null,old,oper,outer,package,print,private,rest,return,short,static,super,

switch,synchronized,this,throw,throws,transient,var,void,volatile,where,write

解答:Java關(guān)鍵字包括:abstract,boolean,case,double,else,false,final,finally,float,

for,generic,goto,if,implements,import,inner,instanceof,interface,long,native,new,null,

outer,package,private,rest,return,short,static,super,switch,synchronized,this,throw,

throws,transient,void,volatile(>

其余的都不是Java關(guān)鍵字:bit,character,comment,end,endif,extend,line,loop,old,

oper,print,var,where,writer

5.請(qǐng)敘述標(biāo)識(shí)符的定義規(guī)則。指出下面給出的字符串中,哪些不能用作標(biāo)識(shí)符,并說(shuō)明原

因:

here,(here,this,(hat,it,2tol,標(biāo)識(shí)符,字符串,名字

解答:在Java中,定義標(biāo)識(shí)符的規(guī)則主要有:

(1)標(biāo)識(shí)符是以字母、下劃線(_)或美元符($)開(kāi)頭,由字母、數(shù)字、下劃線

(_)或美元符($)組成的字符串。僅能含有這些字符。

(2)標(biāo)識(shí)符區(qū)分大小寫(xiě)。

(3)標(biāo)識(shí)符的氏度沒(méi)有限制。

(4)注釋和空白不能插在一個(gè)標(biāo)識(shí)符之中。

(5)Java有許多關(guān)鍵字,它們都有各自的特殊意義和用法,不得用它們作為標(biāo)識(shí)符。

題目所給的標(biāo)識(shí)符中,不正確的有this和2tol,其中this是Java中的關(guān)鍵字,不能用

作標(biāo)識(shí)符,2tol是以數(shù)字開(kāi)頭的字符串,也不符合Java對(duì)標(biāo)識(shí)符的規(guī)定。其他的都是正確

的標(biāo)識(shí)符。漢字亦是字母。

6.轉(zhuǎn)義字符是什么?列舉幾個(gè)轉(zhuǎn)義字符。

解答:有些字符在語(yǔ)言中有特殊的含義,表示它們時(shí)應(yīng)使用轉(zhuǎn)義字符。轉(zhuǎn)義字符就是

使用特殊格式表示的有特殊含義的字符。表2-2中列出了幾個(gè)轉(zhuǎn)義字符。

表2-2幾個(gè)轉(zhuǎn)義字符及其含義

轉(zhuǎn)義字符含義

\b退格鍵(Backspace)

\n換行符

\r回車符

\t水平制表符(Tab)

\\反斜杠\

\,單引號(hào)’

\"雙引號(hào)"

7.Java中的類型轉(zhuǎn)換是指什么?

解答:每個(gè)數(shù)據(jù)都與特定的類型相關(guān),運(yùn)算時(shí),允許整型、浮點(diǎn)型、字符型數(shù)據(jù)進(jìn)行

混合運(yùn)算。不同類型的變量數(shù)據(jù)要先轉(zhuǎn)換為同一種類型,然后再進(jìn)行運(yùn)算。Java是一種強(qiáng)

類型語(yǔ)言,不支持變量數(shù)據(jù)間的自動(dòng)任意轉(zhuǎn)換,有時(shí)必須顯式地進(jìn)行變量類型的轉(zhuǎn)換。

如果同為整數(shù)類型,或同為浮點(diǎn)數(shù)類型,那么,轉(zhuǎn)換的原則是位數(shù)少的類型可以轉(zhuǎn)換

為位數(shù)多的類型。對(duì)于不同類的數(shù)值類型,轉(zhuǎn)換的原則是整數(shù)類型可以轉(zhuǎn)換為浮點(diǎn)數(shù)類

型。有一個(gè)特例是字符類型,它可以轉(zhuǎn)換為位數(shù)更長(zhǎng)的熟數(shù)類型或浮點(diǎn)數(shù)類型。上述這幾

種轉(zhuǎn)換稱作自動(dòng)類型轉(zhuǎn)換,也就是表達(dá)式中不需要顯式地指明相關(guān)的類型信息。凡是不符

合自動(dòng)類型轉(zhuǎn)換規(guī)則的類型轉(zhuǎn)換,都必須標(biāo)注出目標(biāo)類型的名字,這屬于強(qiáng)制類型轉(zhuǎn)換。

8.>>>與>>有什么區(qū)別?舉例說(shuō)明。

解答:Java提供兩種右移運(yùn)算符。邏輯右移運(yùn)算符(也稱無(wú)符號(hào)右移運(yùn)算符):>>>只對(duì)

位進(jìn)行操作,而沒(méi)有算術(shù)含義,它用0填充移位后左側(cè)的空位。運(yùn)算符“>>”執(zhí)行算術(shù)右

移,它使用最高位填充移位后左側(cè)的空位。右移的結(jié)果為:每移一位,第一個(gè)操作數(shù)被2整

除一次,移動(dòng)的次數(shù)由第二個(gè)操作數(shù)確定。比如,-256?4得到-16,-256>?4得到268435440,

0xa2?>2得至IJ40。

9.下列表達(dá)式中,找出每個(gè)操作符的計(jì)算順序,在操作符下按次序標(biāo)上相應(yīng)的數(shù)字。

a+b+c-d

a+b/c-d

a+b/c*d

(a+b)+c-d

(a+b)+(c-d)%e

(a+b)+c-d%e

(a+b)%e%c-d

解答:在Java中,在對(duì)一個(gè)表達(dá)式進(jìn)行計(jì)算時(shí),如果表達(dá)式中含有多個(gè)運(yùn)算符,則要

按運(yùn)算符的優(yōu)先順序從高向低依次進(jìn)行,同級(jí)運(yùn)算符則按結(jié)合律進(jìn)行。括號(hào)可以改變運(yùn)算

次序。

各表達(dá)式中運(yùn)算符的計(jì)算順序如下所示。

a+b+c-d

123

a+b/c-d

213

a+b/c*d

312

(a+b)+c-d

123

(a+b)+(c-d)%e

I423

(a+b)+c-d%e

1243

(a+b)%e%c-d

1234

10.什么是變量聲明?

解答:Java中,通過(guò)在對(duì)象類型后緊跟一個(gè)變量名來(lái)對(duì)變量進(jìn)行聲明。例如;int

num。變量聲明也叫變量說(shuō)明。

【延伸閱讀】根據(jù)變量是基本數(shù)據(jù)類型還是復(fù)合數(shù)據(jù)類型,其聲明的效果也分兩種結(jié)

果。對(duì)于簡(jiǎn)單類型的變量,聲明即為創(chuàng)建,也就是在內(nèi)存中分配了適當(dāng)?shù)拇鎯?chǔ)空間。完成

初始化后可以直接使用。而對(duì)于復(fù)合數(shù)據(jù)類型變量,聲明只是定義了對(duì)所聲明變量的?個(gè)

引用,這個(gè)引用還沒(méi)有指向任何可用的存儲(chǔ)單元,還需要通過(guò)new運(yùn)算符來(lái)實(shí)例化該對(duì)

象,也就是分配內(nèi)存,并讓引用指向這個(gè)存儲(chǔ)區(qū)的首地址。

四、程序分析題

閱讀下列程序片段,請(qǐng)寫(xiě)出程序片段的執(zhí)行結(jié)果。

intbl=1;

intb2=I;

bl?=31;

b2?=31;

bl?=31;

bl?=1;

b2?>=31;

b2?>=1;

解答:>>>與>>都是右移運(yùn)算符,它們的不同之處在于使用不同位填充移位后左側(cè)的

空白。>>運(yùn)算使用符號(hào)位填充左側(cè)的空位,而>>>使用零填充空位。也就是說(shuō),>>運(yùn)算保

持操作數(shù)的符號(hào)不變,而>>>運(yùn)算則可能改變?cè)瓟?shù)的符號(hào)。

分析上面的程序段。仞始時(shí),bl和b2都是ini型的變量,占32位,初值均為1,兩

個(gè)變量分別向左移動(dòng)31位,兩個(gè)值變?yōu)椋?00000000000000000000000(X)000000,在計(jì)算

機(jī)內(nèi)部,這個(gè)值是:-2147483648V

下一步,bl再向右移動(dòng)31位,這里使用的是>>運(yùn)算符。bl是一個(gè)負(fù)數(shù),其最高位為

1,右移時(shí)使用1填充左側(cè)的空位。右移31位后bl的值為:111111111111111111111111

lllllllh在計(jì)算機(jī)內(nèi)部,這個(gè)值是:-1。bl繼續(xù)向右移動(dòng)1位,此時(shí)值不變,仍為-1。

實(shí)際上,此后使用>>運(yùn)算符將bl向右移動(dòng)任何位,它的值都不會(huì)再變了。

使用>>>運(yùn)算符則有所不同。>>>使用零填充左側(cè)的空位,所以將b2向右移動(dòng)31位

后,它的值為:0000000000000000(X)00000000000001,即b2的值為1。再向右移動(dòng)I

位,則它的值為:000000000000000000(X)000000000000,即b2的值為0。

第三章流程控制語(yǔ)句

一、單項(xiàng)選擇題

1.以下選項(xiàng)中,不屬于Java語(yǔ)句的是【】

A.for語(yǔ)句B.switch語(yǔ)句C.while語(yǔ)句D.include語(yǔ)句

答案:Do

include語(yǔ)句是C語(yǔ)言中用來(lái)包含頭文件的語(yǔ)句。Java語(yǔ)言中引入包的語(yǔ)句是import語(yǔ)句。

2.以下選項(xiàng)中,不屬于Java語(yǔ)句的是【】

A.break語(yǔ)句B.continue語(yǔ)句C.goto語(yǔ)句D.for語(yǔ)句

答案:Co

goto語(yǔ)句使得程序的執(zhí)行流程混亂,程序的易讀性降低,Java語(yǔ)言中已經(jīng)不再使用該語(yǔ)句。

3.設(shè)i的初值為6,則執(zhí)行完戶二;后,i和j的值分別為【】

A.6,6B.6,5C.5,6D.5,5

答案:Co

給j賦值時(shí),使用的是i原來(lái)的值,即6。賦值后,i的值減1,為5。

4.在一個(gè)if語(yǔ)句中,下列選項(xiàng)中正確的是【】

A.if的個(gè)數(shù)一定多于else的個(gè)數(shù)B.if的個(gè)數(shù)一定與else的個(gè)數(shù)相等

C.if的個(gè)數(shù)一定少于else的個(gè)數(shù)D.if的個(gè)數(shù)可能多于else的個(gè)數(shù)

答案:Do

if語(yǔ)句是允許嵌套的,而且else語(yǔ)句是可選的。當(dāng)在一個(gè)if語(yǔ)句中又嵌套了if語(yǔ)句時(shí),就

會(huì)出現(xiàn)多個(gè)if的情況。而因?yàn)閑lse是可選的,所以它的個(gè)數(shù)少于等于if的個(gè)數(shù)。

5.switch語(yǔ)句中,大多數(shù)情況下,每個(gè)case塊中最后一條語(yǔ)句應(yīng)該是【】

A.defaultB.continueC.breakD.goto

答案:Co

按照switch語(yǔ)句的語(yǔ)法格式,每個(gè)case塊中最后一條語(yǔ)句是break語(yǔ)句。表示針對(duì)這種情

形的處理已經(jīng)完成,程序的控制流轉(zhuǎn)至switch之后的語(yǔ)句繼續(xù)執(zhí)行。

6.switch語(yǔ)句中,可以不寫(xiě)break語(yǔ)句的case塊是【】

A.第一個(gè)塊B.最后一個(gè)塊C.任意一個(gè)塊D.哪個(gè)塊都不行

答案:Bo

實(shí)際上,從語(yǔ)法角度看,哪個(gè)case塊都可以不寫(xiě)break語(yǔ)句,但這可能不是原本想要的語(yǔ)

義。沒(méi)有break語(yǔ)句,控制流會(huì)一直執(zhí)行下去,起不到多分支的作用。通常,每個(gè)case塊

都要寫(xiě)break語(yǔ)句,保證執(zhí)行了該塊中的語(yǔ)句后控制流轉(zhuǎn)到switch語(yǔ)句之后繼續(xù)執(zhí)行。如

果進(jìn)入最后一個(gè)case塊執(zhí)行,則寫(xiě)不寫(xiě)break語(yǔ)句,控制流都轉(zhuǎn)到switch語(yǔ)句之后,所以

這個(gè)break語(yǔ)句是可以省略的。

7.switch語(yǔ)句中,如果沒(méi)有相匹配的條件,則執(zhí)行【】

A.任一個(gè)case后的語(yǔ)句B.defauh之后的語(yǔ)句

C.所有case后的語(yǔ)句D.循環(huán)執(zhí)行switch語(yǔ)句

答案:Bo

switch語(yǔ)句中,如果沒(méi)能進(jìn)入任何一個(gè)case塊執(zhí)行,則進(jìn)入default塊中,執(zhí)行其中的語(yǔ)

句??梢詫efault塊看作是一個(gè)分支,即前面的條件均不滿足時(shí)要執(zhí)行的語(yǔ)句。

8.下列選項(xiàng)中,不是受檢異常的是【】

A.ClassNotFoundExceptionB.ArithnieticException

C.FilcNotFoundExccptionD.lOExccption

答案:Be

ArithmcticExccption異常屬于運(yùn)行時(shí)異常。

9.下列選項(xiàng)中,與try語(yǔ)句配套使用的語(yǔ)句是【】

A.defaultB.catchC.breakD.case

答案:B.,

try-catch語(yǔ)句是異常處理語(yǔ)句,用try語(yǔ)句括住可能會(huì)出現(xiàn)異常的語(yǔ)句,后面使用catch語(yǔ)

句捕獲異常并進(jìn)行處理。

10.處理異常時(shí),catch語(yǔ)句的后面,一般都會(huì)出現(xiàn)的語(yǔ)句是【】

A.defaultB.catchC.breakD.finally

答案:

catch語(yǔ)句的最后通常是finally語(yǔ)句。不論是否捕獲到異常,都要執(zhí)行finally后面的語(yǔ)

句口

11.假設(shè)有定義:Strings=null,則下列選項(xiàng)中,能引發(fā)異常的是【】

I.if((s!=null)&(s.iength()>0))

II.if((s!=null)&&(s.length()>0))

III.if((s==null)|(s.length()==0))

IV.if((s==null)||(s.length()==0))

A.IB.I和HIC.II和IVD.Ill

答案:Bo

I和HI中,使用的分別是&和運(yùn)算符,這是位運(yùn)算符,沒(méi)有短路功能,所以&或|運(yùn)算符的

前后子表達(dá)式都要執(zhí)行。如果s是空串,則調(diào)用s.length()時(shí)會(huì)發(fā)生異常。H和IV中,使用

的是邏輯運(yùn)算符&&和II,具有短路功能。對(duì)于具有短路功能的運(yùn)算符,如果運(yùn)算符前面的

子表達(dá)式能決定整個(gè)表達(dá)式的結(jié)果,則可以跳過(guò)運(yùn)算符后面的子表達(dá)式的計(jì)算。H中,當(dāng)

s是空串時(shí),s!=null的值為false,不必去執(zhí)行s』ength()>0。當(dāng)s不是空串時(shí),調(diào)用

shngth。是安全的。IV中,當(dāng)s不是空串時(shí),調(diào)用s.length()==O是安全的。當(dāng)s是空串

時(shí),s==null為true,已經(jīng)能夠決定整個(gè)表達(dá)式的結(jié)果為true,不用去計(jì)算s』cngth(),所以

也是安全的。

二、填空題

1.能替換for語(yǔ)句的語(yǔ)句是或。

答案:do-whilcwhilco

for語(yǔ)句、do-while語(yǔ)句和while語(yǔ)句都是循環(huán)語(yǔ)句,且可以互相替換。

2.能替換if語(yǔ)句的語(yǔ)句是o

答案:switch語(yǔ)句。

if語(yǔ)句與switch語(yǔ)句都是分支語(yǔ)句,switch語(yǔ)句中的表達(dá)式與if語(yǔ)句中的條件表達(dá)式不完

全相同,switch中表達(dá)式的計(jì)算結(jié)果必須是int類型或char類型的,而if語(yǔ)句中是條件表

達(dá)式,計(jì)算結(jié)果是邏輯值。

3.switch語(yǔ)句中,表示條件的表達(dá)式只能是類型或類型。

答案:intchar。

4.while語(yǔ)句中while后面的條件必須是類型的。

答案:邏輯/布爾。

while語(yǔ)句中,while后面是條件表達(dá)式,計(jì)算結(jié)果是邏輯:型的,或稱布爾型的。

5.流控制語(yǔ)句有3類,對(duì)應(yīng)于順序流的語(yǔ)句是。

答案:賦值語(yǔ)句。

流控制分為3類:順序流、循環(huán)流和分支流。對(duì)應(yīng)于順序流的是賦值語(yǔ)句。

6.循環(huán)語(yǔ)句有語(yǔ)句、語(yǔ)句和語(yǔ)句。

答案:forwhiledo-whileo

這3種語(yǔ)句都是循環(huán)語(yǔ)句。

7.分支語(yǔ)句有語(yǔ)句和語(yǔ)句。

答案:ifswitch。

這兩種語(yǔ)句都是分支語(yǔ)句。

8.如果想使用其他包中的類,則需要在程序的開(kāi)頭使用語(yǔ)句。

答案:引入/import語(yǔ)句。

三、簡(jiǎn)答題

1.請(qǐng)說(shuō)明switch語(yǔ)句的執(zhí)行過(guò)程。

解答:switch語(yǔ)句的語(yǔ)法格式是:

switch(表達(dá)式)(

casec1:語(yǔ)句組i;break://break語(yǔ)句可選

casec2:語(yǔ)句組2;break;//break語(yǔ)句可選

caseck:語(yǔ)句組k:break;“break語(yǔ)句可選

[default:語(yǔ)句組;break;//break語(yǔ)句可選

1

switch語(yǔ)句的執(zhí)行過(guò)程是:計(jì)算表達(dá)式的值,用該值依次和cl、c2、…、ck相比較。如

果該值等于其中之一,例如ci,那么執(zhí)行caseci之后的語(yǔ)句組i,直到遇到break語(yǔ)句跳到

switch之后的語(yǔ)句。如果沒(méi)有相匹配的ci,則執(zhí)行default之后的語(yǔ)句。

2.程序3.1中如果某個(gè)treak語(yǔ)句不寫(xiě),則程序執(zhí)行時(shí)的輸出是什么?舉例說(shuō)明。

解答:如果某個(gè)break語(yǔ)句不寫(xiě),則當(dāng)前執(zhí)行的ease塊執(zhí)行完畢,會(huì)繼續(xù)執(zhí)行下一個(gè)

case塊內(nèi)的語(yǔ)句,直到遇到break語(yǔ)句時(shí)結(jié)束。

舉例來(lái)說(shuō),在程序3.1中,如果第一組case對(duì)應(yīng)的語(yǔ)句塊內(nèi)不寫(xiě)break語(yǔ)句,即不寫(xiě)第

一個(gè)break語(yǔ)句,則當(dāng)輸入命令行第一個(gè)參數(shù)的首字符是數(shù)字時(shí),比如輸入“234”,那么輸

出內(nèi)容是:Thefirstcharacterisdigit2及Thefirstcharacterislowercaseletter2。當(dāng)然,后一

條輸出是不應(yīng)該出現(xiàn)的。

3.請(qǐng)說(shuō)明嵌套的if語(yǔ)句中,else語(yǔ)句的對(duì)應(yīng)規(guī)則。

解答:Java規(guī)定else子句屬于邏輯上離它最近的if語(yǔ)句,也就是同一塊中還沒(méi)有匹配

else的最近的if。

4.請(qǐng)簡(jiǎn)要說(shuō)明while語(yǔ)句與do-while語(yǔ)句的不同之處。

解答:while語(yǔ)句和do-while語(yǔ)句的語(yǔ)法格式是不同的,while中條件表達(dá)式寫(xiě)在前面,

do-while中條件表達(dá)式寫(xiě)在后面。

兩種語(yǔ)句條件表達(dá)式的判斷時(shí)間也不同。while語(yǔ)句先判斷條件表達(dá)式的值,然后根據(jù)

值的真假?zèng)Q定是否執(zhí)行循環(huán)體。do-while語(yǔ)句先執(zhí)行循環(huán)體,再判斷條件表達(dá)式的值,以決

定是否再次執(zhí)行循環(huán)體。

兩種語(yǔ)句中循環(huán)體的執(zhí)行次數(shù)也不同。while中,循環(huán)體語(yǔ)句可能一次也不執(zhí)行,do循

環(huán)中的循環(huán)體至少執(zhí)行一?次。

5.請(qǐng)簡(jiǎn)要說(shuō)明while語(yǔ)句與for語(yǔ)句的適用情況。

解答:for語(yǔ)句中,可以以執(zhí)行次數(shù)來(lái)控制循環(huán)體的執(zhí)行,當(dāng)明確了次數(shù)后,可以選用

for語(yǔ)句。而有時(shí)只知道循環(huán)體執(zhí)行的前提條件,但執(zhí)行次數(shù)并不明確,此時(shí)可以使用while

語(yǔ)句。

6.什么是異常?解釋“拋出”和“捕獲”的含義。

解答:Java語(yǔ)言把程序運(yùn)行中可能遇到的錯(cuò)誤分為兩類,其中一類是非致命性的,通過(guò)

某種修正后程序還能繼續(xù)執(zhí)行。這類錯(cuò)誤稱作異常(Exception)。

生成的異常對(duì)象傳遞給Java運(yùn)行時(shí)系統(tǒng),運(yùn)行時(shí)系統(tǒng)尋找相應(yīng)的代碼來(lái)處理這一異常。

生成異常對(duì)象并把它提交給運(yùn)行時(shí)系統(tǒng)的這?過(guò)程稱為拋出(throw)一個(gè)異常。

Java運(yùn)行時(shí)系統(tǒng)從生成對(duì)象的代碼塊開(kāi)始進(jìn)行回溯,沿方法的調(diào)用棧逐層回溯,尋找相

應(yīng)的處理代碼,直到找到包含相應(yīng)異常處理的方法為止,并把異常對(duì)象交給該方法處理。這

一過(guò)程稱為捕獲(catch)(>

7.Java是如何處理異常的?

解答:當(dāng)發(fā)生異常時(shí),Java語(yǔ)言提供的異常處理機(jī)制,可專門用來(lái)處理異常。Java程序

中,使用iry語(yǔ)句括住可能拋出異常的代碼段,用catch語(yǔ)句指明要捕獲的異常及相應(yīng)的處

理代碼。一般地,當(dāng)發(fā)生異常時(shí),有3種方法可以處理拋出的異常。

(1)可以忽略它,這將導(dǎo)致程序中斷,并輸出一條信息。

(2)在發(fā)生異常的地方處理它。根據(jù)異常所屬的類,找到對(duì)應(yīng)的catch語(yǔ)句,然后執(zhí)行

其后的語(yǔ)句序列,完成對(duì)異常的處理,恢及程序的執(zhí)行。

(3)Java運(yùn)行時(shí)系統(tǒng)從生成異常對(duì)象的代碼塊開(kāi)始,沿方法的調(diào)用棧逐層回溯,在調(diào)

用層次中更高層的方法中捕獲并處理異常。

8.try及catch語(yǔ)句的作用是什么?語(yǔ)法格式如何?

解答:對(duì)于可能拋出異常的代碼段,要使用try語(yǔ)句括住,用catch語(yǔ)句指明要捕獲的

異常及相應(yīng)的處理代碼?;卣Z(yǔ)句與catch語(yǔ)句的語(yǔ)法格式如下:

try{

〃此處為拋出具體異常的代碼

}catch(異常類型1e){

〃拋出異常類型I異常時(shí)要執(zhí)行的代碼

}catch(異常類型2c){

〃拋出異常類型2異常時(shí)要執(zhí)行的代碼

}catch(異常類型ke){

〃拋出異常類型k異常時(shí)要執(zhí)行的代碼

}finally!

〃必須執(zhí)行的代碼

I

其中,異常類型1、異常類型2.........異常類型k是產(chǎn)生的異常類型。根據(jù)發(fā)生異常所屬的

類,找到對(duì)應(yīng)的calch語(yǔ)句,然后執(zhí)行其后的語(yǔ)句序列,完成對(duì)異常的處理,恢復(fù)程序的

執(zhí)行。

9.在什么情況下執(zhí)行try語(yǔ)句中finally后面的代碼段?在什么情況下不執(zhí)行?

解答:在執(zhí)行iry語(yǔ)句時(shí),不論是否捕獲到異常,都要執(zhí)行finally后面的語(yǔ)句。try后

面大括號(hào)({})中的代碼稱為保護(hù)代碼。如果在保護(hù)代碼內(nèi)執(zhí)行了System.exitO方法,則

程序?qū)⑼顺觯藭r(shí)不執(zhí)行finally后面的語(yǔ)句,這是不執(zhí)行行nally后面語(yǔ)句的唯一一種情

況。

10.你能說(shuō)出Java中常見(jiàn)的幾個(gè)異常嗎?它們表示什么意思?在什么情況下引起這些異

常?

解答:Java中定義了一些常見(jiàn)異常,這些是系統(tǒng)預(yù)定義的,它們的處理由系統(tǒng)自動(dòng)執(zhí)

行。常見(jiàn)的幾個(gè)異常有:

(1)ArithmeticException算術(shù)異常

整數(shù)除法中,如果除數(shù)為0,則發(fā)生該類異常。Java虛擬機(jī)遇到這樣的錯(cuò)誤時(shí)會(huì)自動(dòng)

中止程序的執(zhí)行流程,并新建一個(gè)ArithmeticException類的對(duì)象,即拋出一個(gè)算術(shù)運(yùn)算異

常。例如下面的程序?qū)⒁l(fā)ArithmecicException異常。

publicclassTestArithmeticExceplion

{publicstaticvoidinain(Stringargs[|){

inidenominator=0,numerator=20,result=0;

result=numerator/denominator;

//除數(shù)為零,將引發(fā)ArilhmciicExccption異,常

System.out.println(result);

)

I

(2)NullPointerExceplion空指針異常

如果一個(gè)對(duì)象還沒(méi)有實(shí)例化,那么訪問(wèn)該對(duì)象或調(diào)用它的方法時(shí)將導(dǎo)致

Nul

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論