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

下載本文檔

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

文檔簡介

第一章Java概述

一、單項選擇題

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

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

答案:Co

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

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

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

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

答案:Do

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

3.Java語言的解釋器是【】

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

答案:Co

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

工具包。

4.下列選項中,不屬于Java語言特點的是【】

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

答案:A。

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

點。

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

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

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

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

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

答案:Do

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

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

經(jīng)沒有指針這個語法成分了。

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

A.classB.staticC.voidD.public

答案:Ao

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

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

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

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

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

答案:Co

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

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

這是面向?qū)ο笳Z言的特點。

二、填空題

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

答案:javacMyTest.javao

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

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

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

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

3.JVM的全稱是o

答案:Java虛擬機,英文是JavaVirtualMachine。

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

答案:publicstaticvoido

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

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

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

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

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

行。

答案:編譯。

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

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

答案:MyFirstTest.classo

三、簡答題

1.請簡要敘述Java語言的特點。

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

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

(1)語法簡單,功能強大

Java語言的語法非常像C++,同時去掉了C++中不常用且容易出錯的地方,Java解釋

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

(2)與平臺無關(guān)

Java語言一個非常重要的特點就是與平臺的無關(guān)性,Java虛擬機(JavaVirtualMachine,

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

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

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

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

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

不需要重新編譯。

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

是?致的,為Java程序跨平臺的無縫移植提供了很大的便利。

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

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

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

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

(4)多線程

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

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

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

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

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

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

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

2.為什么說Java語言是平臺無關(guān)的?

解答:一般的高級語言程序在不同的平臺上運行時,需要針對本計算機機器指令集而編

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

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

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

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

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

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

是一致的,為Java程序跨平臺的無縫移植提供了很大的便利。

3.什么是Java虛擬機?

解答:Java虛擬機(JavaVirtualMachine,簡稱JVM)是,臺虛擬計算機,是通過在實

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

于一個小巧而高效的CPU,是實現(xiàn)Java語言平臺無關(guān)性的保證。

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

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

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

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

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

Java虛擬機規(guī)范提供了編譯所有Java代碼的硬件平臺。因為編譯是針對假想機的,所

以該規(guī)范能讓Java程序獨立于平臺。它適用于每個具體的硬件平臺,以保證能運行為JVM

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

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

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

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

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

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

Environment),簡稱為運行時。Java運行時必須遵從Java虛擬機規(guī)范,這樣,Java編譯器生

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

解答:java.awt.Color是用來處理顏色的類。選出2個常用方法如下。

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

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

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

建一個不透明的sRGB顏色。

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

一、單項選擇題

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

A.defineB.typeC.includeD.switch

答案:Do

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

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

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

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

A.waitB.newC.longD.switch

答案:Ao

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

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

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

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

答案:A。

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

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

A.defaultB.finalC.longD.CASE

答案:Do

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

相同的。default用在多重分支語句中,final用在異常處理語句中。long表示長整型類型。

5.下列選項中,能作為Java語言注釋的是【】

A.從/*開始直到行尾B.從〃開始直到行尾

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

答案:Bo

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

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

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

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

答案:De

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

接口名及程序名。

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

A.記錄型B.整型C.浮點型D.布爾型

答案:Ao

記錄型是C語言中由程序員通過typedef定義的,Java語言中除了整型、浮點型、布爾型等

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

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

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

答案:Ao

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

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

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

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

答案:Ao

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

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

答案:Ao

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

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

二、填空題

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

答案:boolean(>

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

答案:自動變量,或是局部變量/臨時變量/棧變量。

自動變量需要由程序員為其初始化。

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

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

答案:短路操作。

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

答案:int。

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

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

也為int類型的。

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

轉(zhuǎn)換稱作。

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

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

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

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

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

轉(zhuǎn)換稱作O

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

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

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

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

答案:4o

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

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

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

答案:true。

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

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

所以結(jié)果是true。

三、簡答題

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

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

型?;緮?shù)據(jù)類型共有8種,分為4小類,分別是邏輯型、字符型、整型和浮點型。復(fù)合

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

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

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

兩種類型,分別是:單精度浮點數(shù)float(4字節(jié))及雙精度浮點數(shù)double(8字節(jié))。

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

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

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

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

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

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

值必須用一對單引號(‘‘)括起來。例如,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開頭的數(shù)為十進(jìn)制數(shù),以

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

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

l.8e+308o

2.Java中常用的運算符有哪幾類?每類列出幾個,并說明其含義。

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

此外還有幾個特殊的運算符。如表2-1所示。

表2-1部分運算符及其含義

類別運算符運算符含義

+加法

算術(shù)運算符減法

++加1

<小于

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

==等于

&&邏輯與

邏輯運算符II邏輯或

J邏輯非

&位與

位運算符A位異或

?左移

new對象實例

+=字符串連接賦值

特殊運算符

?:條件運算符

1=或賦值

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

解答:Java語言將全部運算符按從高到低劃分了15個等級,每個等級中包含少見一個

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

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

優(yōu)先級等。

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

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

次序。各運算符的優(yōu)先次序見教材的表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.請敘述標(biāo)識符的定義規(guī)則。指出下面給出的字符串中,哪些不能用作標(biāo)識符,并說明原

因:

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

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

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

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

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

(3)標(biāo)識符的氏度沒有限制。

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

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

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

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

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

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

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

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

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

轉(zhuǎn)義字符含義

\b退格鍵(Backspace)

\n換行符

\r回車符

\t水平制表符(Tab)

\\反斜杠\

\,單引號’

\"雙引號"

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

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

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

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

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

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

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

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

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

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

解答:Java提供兩種右移運算符。邏輯右移運算符(也稱無符號右移運算符):>>>只對

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

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

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

0xa2?>2得至IJ40。

9.下列表達(dá)式中,找出每個操作符的計算順序,在操作符下按次序標(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中,在對一個表達(dá)式進(jìn)行計算時,如果表達(dá)式中含有多個運算符,則要

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

次序。

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

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中,通過在對象類型后緊跟一個變量名來對變量進(jìn)行聲明。例如;int

num。變量聲明也叫變量說明。

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

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

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

引用,這個引用還沒有指向任何可用的存儲單元,還需要通過new運算符來實例化該對

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

四、程序分析題

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

intbl=1;

intb2=I;

bl?=31;

b2?=31;

bl?=31;

bl?=1;

b2?>=31;

b2?>=1;

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

空白。>>運算使用符號位填充左側(cè)的空位,而>>>使用零填充空位。也就是說,>>運算保

持操作數(shù)的符號不變,而>>>運算則可能改變原數(shù)的符號。

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

個變量分別向左移動31位,兩個值變?yōu)椋?00000000000000000000000(X)000000,在計算

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

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

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

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

實際上,此后使用>>運算符將bl向右移動任何位,它的值都不會再變了。

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

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

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

第三章流程控制語句

一、單項選擇題

1.以下選項中,不屬于Java語句的是【】

A.for語句B.switch語句C.while語句D.include語句

答案:Do

include語句是C語言中用來包含頭文件的語句。Java語言中引入包的語句是import語句。

2.以下選項中,不屬于Java語句的是【】

A.break語句B.continue語句C.goto語句D.for語句

答案:Co

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

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

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

答案:Co

給j賦值時,使用的是i原來的值,即6。賦值后,i的值減1,為5。

4.在一個if語句中,下列選項中正確的是【】

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

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

答案:Do

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

會出現(xiàn)多個if的情況。而因為else是可選的,所以它的個數(shù)少于等于if的個數(shù)。

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

A.defaultB.continueC.breakD.goto

答案:Co

按照switch語句的語法格式,每個case塊中最后一條語句是break語句。表示針對這種情

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

6.switch語句中,可以不寫break語句的case塊是【】

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

答案:Bo

實際上,從語法角度看,哪個case塊都可以不寫break語句,但這可能不是原本想要的語

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

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

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

這個break語句是可以省略的。

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

A.任一個case后的語句B.defauh之后的語句

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

答案:Bo

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

句。可以將default塊看作是一個分支,即前面的條件均不滿足時要執(zhí)行的語句。

8.下列選項中,不是受檢異常的是【】

A.ClassNotFoundExceptionB.ArithnieticException

C.FilcNotFoundExccptionD.lOExccption

答案:Be

ArithmcticExccption異常屬于運行時異常。

9.下列選項中,與try語句配套使用的語句是【】

A.defaultB.catchC.breakD.case

答案:B.,

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

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

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

A.defaultB.catchC.breakD.finally

答案:

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

句口

11.假設(shè)有定義:Strings=null,則下列選項中,能引發(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中,使用的分別是&和運算符,這是位運算符,沒有短路功能,所以&或|運算符的

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

的是邏輯運算符&&和II,具有短路功能。對于具有短路功能的運算符,如果運算符前面的

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

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

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

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

也是安全的。

二、填空題

1.能替換for語句的語句是或。

答案:do-whilcwhilco

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

2.能替換if語句的語句是o

答案:switch語句。

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

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

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

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

答案:intchar。

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

答案:邏輯/布爾。

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

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

答案:賦值語句。

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

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

答案:forwhiledo-whileo

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

7.分支語句有語句和語句。

答案:ifswitch。

這兩種語句都是分支語句。

8.如果想使用其他包中的類,則需要在程序的開頭使用語句。

答案:引入/import語句。

三、簡答題

1.請說明switch語句的執(zhí)行過程。

解答:switch語句的語法格式是:

switch(表達(dá)式)(

casec1:語句組i;break://break語句可選

casec2:語句組2;break;//break語句可選

caseck:語句組k:break;“break語句可選

[default:語句組;break;//break語句可選

1

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

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

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

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

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

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

舉例來說,在程序3.1中,如果第一組case對應(yīng)的語句塊內(nèi)不寫break語句,即不寫第

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

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

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

3.請說明嵌套的if語句中,else語句的對應(yīng)規(guī)則。

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

else的最近的if。

4.請簡要說明while語句與do-while語句的不同之處。

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

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

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

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

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

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

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

5.請簡要說明while語句與for語句的適用情況。

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

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

語句。

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

解答:Java語言把程序運行中可能遇到的錯誤分為兩類,其中一類是非致命性的,通過

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

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

生成異常對象并把它提交給運行時系統(tǒng)的這?過程稱為拋出(throw)一個異常。

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

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

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

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

解答:當(dāng)發(fā)生異常時,Java語言提供的異常處理機制,可專門用來處理異常。Java程序

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

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

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

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

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

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

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

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

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

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

try{

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

}catch(異常類型1e){

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

}catch(異常類型2c){

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

}catch(異常類型ke){

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

}finally!

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

I

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

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

執(zhí)行。

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

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

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

程序?qū)⑼顺?,此時不執(zhí)行finally后面的語句,這是不執(zhí)行行nally后面語句的唯一一種情

況。

10.你能說出Java中常見的幾個異常嗎?它們表示什么意思?在什么情況下引起這些異

常?

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

行。常見的幾個異常有:

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

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

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

常。例如下面的程序?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空指針異常

如果一個對象還沒有實例化,那么訪問該對象或調(diào)用它的方法時將導(dǎo)致

Nul

溫馨提示

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

評論

0/150

提交評論