




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 10713:2025 EN Jewellery and precious metals - Gold alloy coatings
- T-ZHAQ 8-2024 小葉牛大力種植技術(shù)規(guī)程
- 二零二五年度應(yīng)屆大學(xué)生人力資源實(shí)習(xí)合同
- 二零二五年度股票投資風(fēng)險(xiǎn)控制與合規(guī)監(jiān)督協(xié)議
- 二零二五年度個(gè)人債權(quán)轉(zhuǎn)讓協(xié)議書(shū)(關(guān)于專利權(quán)轉(zhuǎn)讓)
- 高管二零二五年度勞動(dòng)合同及離職交接程序
- 二零二五年度路橋工程土地征用與拆遷合同
- 美容院合伙人投資回報(bào)與風(fēng)險(xiǎn)控制協(xié)議書(shū)(2025年度)
- 2025年度金融借款合同違約起訴流程及費(fèi)用結(jié)算合同
- 2025年度餐飲企業(yè)跨界合作合伙經(jīng)營(yíng)合同
- 高標(biāo)準(zhǔn)農(nóng)田建設(shè)項(xiàng)目驗(yàn)收技術(shù)方案
- 2024年甘肅天水麥積山石窟藝術(shù)研究所招聘工作人員考試真題
- 人效的指標(biāo)體系及其“落地雙引擎”
- 2025年山東省榮成市屬事業(yè)單位招聘崗位及歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 醫(yī)學(xué)三基知識(shí)考試題庫(kù)及答案(護(hù)理+臨床)
- 火星表面材料分析-深度研究
- 《教育強(qiáng)國(guó)建設(shè)規(guī)劃綱要(2024-2035年)》解讀講座
- 《義務(wù)教育語(yǔ)文課程標(biāo)準(zhǔn)》2022年修訂版原版
- 天耀中華合唱簡(jiǎn)譜大劇院版
- 部編版四年級(jí)語(yǔ)文下冊(cè)27《巨人的花園》PPT課件(共2課時(shí))
- 新人教版六年級(jí)下冊(cè)科學(xué)全冊(cè)教學(xué)設(shè)計(jì)教案
評(píng)論
0/150
提交評(píng)論