版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2021屆重慶市縉云教育聯(lián)盟高一上學(xué)期期末數(shù)學(xué)試題(解析版)
- 2025年施工項目部春節(jié)節(jié)后復(fù)工復(fù)產(chǎn)工作專項方案 (匯編3份)
- 《畜牧軟件系統(tǒng)介紹》課件
- 小學(xué)一年級100以內(nèi)數(shù)學(xué)口算練習(xí)題大全
- 《結(jié)腸癌護(hù)理查房HY》課件
- 《海報設(shè)計》課件
- 天津市河北區(qū)2023-2024學(xué)年高三上學(xué)期期末質(zhì)量檢測英語試題
- 能源行業(yè)環(huán)保意識培訓(xùn)回顧
- 石油行業(yè)采購工作總結(jié)
- 辦公室衛(wèi)生消毒手冊
- 服務(wù)營銷學(xué)教案
- 護(hù)理查房 小兒支氣管肺炎
- 相關(guān)方安全管理培訓(xùn)
- 2023年中國雪茄煙行業(yè)現(xiàn)狀深度研究與未來投資預(yù)測報告
- 皮帶輸送機巡檢規(guī)程
- 遼寧省大連市沙河口區(qū)2022-2023學(xué)年七年級上學(xué)期期末語文試題(含答案)
- 心肺循環(huán)課件
- 東大光明清潔生產(chǎn)審核報告
- 生產(chǎn)計劃排產(chǎn)表-自動排產(chǎn)
- 管理研究方法論for msci.students maxqda12入門指南
- 2023年通用技術(shù)集團(tuán)招聘筆試題庫及答案解析
評論
0/150
提交評論