Java程序設(shè)計(jì)資料_第1頁(yè)
Java程序設(shè)計(jì)資料_第2頁(yè)
Java程序設(shè)計(jì)資料_第3頁(yè)
Java程序設(shè)計(jì)資料_第4頁(yè)
Java程序設(shè)計(jì)資料_第5頁(yè)
已閱讀5頁(yè),還剩201頁(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)介

第一章概述1.若程序中公有類的名字是OneApp,則保存該程序的文件名是【】A.OneappB.Oneapp.classC.OA.OneappB.Oneapp.classC.OneAppC中使用typedef進(jìn)行類型定義,在中已經(jīng)去掉了。另外三個(gè)選項(xiàng)都是的特點(diǎn)。5.下列關(guān)于程序的敘述中,正確的是A.程序必須配合HTML文件才能執(zhí)行B.JVM解釋執(zhí)行源程序C.程序中可以使用指針6.下列選項(xiàng)中,不是程序主函數(shù)main()前面的修飾符的是【】A.classB.staticC.void第一行中,即類頭中。mainO不是類,是類中的函數(shù)。main(前三個(gè)修飾符的次序可稍做變7.下列概念中,屬于面向?qū)ο笾匾拍詈蜋C(jī)制之一的是【】1.假設(shè)程序保存在文件MyTest.中,則編譯這個(gè)程序的命令是。2.類Testll經(jīng)編譯程序編譯后,產(chǎn)生的文件是。答案:字節(jié)碼文件Testll.class。答案:虛擬機(jī),英文是VirtualMachine。4.程序主函數(shù)mainO前面的修飾符是。5.源文件經(jīng)編譯后生成的二進(jìn)制文件稱為。字節(jié)碼文件是類文件。參見(jiàn)教材第一章第一節(jié)中的內(nèi)容。6.編寫好的源程序在計(jì)算機(jī)上運(yùn)行需依次經(jīng)歷兩個(gè)階段,分別是和解釋執(zhí)行。解答:是通用的、面向?qū)ο蟮?,并具有分布性、安全性?1)語(yǔ)法簡(jiǎn)單,功能強(qiáng)大的語(yǔ)法非常像C++,同時(shí)去掉了C++中不常用且容易出錯(cuò)的地方,解釋器只占用很少(2)與平臺(tái)無(wú)關(guān)一個(gè)非常重要的特點(diǎn)就是與平臺(tái)的無(wú)關(guān)性,虛擬機(jī)(VirtualMachine,簡(jiǎn)稱JVM)是編譯器將程序編譯成虛擬機(jī)能夠識(shí)別的字節(jié)碼(bytecode)。字節(jié)碼就是虛擬機(jī)的機(jī)器指令,它與平臺(tái)無(wú)關(guān),有統(tǒng)一的格式,不依賴于具體的硬件環(huán)境,只運(yùn)行在JVM上。在任何安裝運(yùn)行時(shí)環(huán)境的系統(tǒng)上,都可以執(zhí)行這些代碼。JVM在執(zhí)行字節(jié)碼文件時(shí),把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令執(zhí)行。所以程序在不同的平臺(tái)上運(yùn)行時(shí),不需要重新編譯。(3)解釋編譯兩種運(yùn)行方式程序可以經(jīng)編譯器得到字節(jié)碼。在現(xiàn)在的版本中又加入了編譯功能(即justintime編譯器,簡(jiǎn)稱JIT編譯器),JIT編譯器將字節(jié)碼轉(zhuǎn)換成本機(jī)的機(jī)器代碼,然后可以以較高速度執(zhí)(4)多線程內(nèi)置了級(jí)多線程功能,提供現(xiàn)成的類Thread,只要繼承這個(gè)類就可以編寫多線程的程(5)動(dòng)態(tài)執(zhí)行兼有豐富的API文檔及類庫(kù)瘦客戶機(jī)架構(gòu),減少維護(hù)工作。為用戶提供了詳盡的API文檔說(shuō)明,開發(fā)工具包中的類庫(kù)包羅萬(wàn)象,類庫(kù)與時(shí)俱進(jìn),隨時(shí)更新,增加的新方法和其2.為什么說(shuō)是平臺(tái)無(wú)關(guān)的?不同的目標(biāo)文件。而JVM屏蔽了具體平臺(tái)的差異。編譯器將程序編譯成虛擬機(jī)能夠識(shí)別的字節(jié)碼(bytecode)。字節(jié)碼就是虛擬機(jī)的機(jī)器指令,它與平臺(tái)無(wú)關(guān),有統(tǒng)一的格式,不依賴于具體的硬件環(huán)境,只運(yùn)行在JVM上。在任何安裝運(yùn)行時(shí)環(huán)境的系統(tǒng)上,都可以執(zhí)行這些代碼。JVM在執(zhí)行字節(jié)碼文件時(shí),把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令執(zhí)行。所以程序在不同的平臺(tái)上運(yùn)行時(shí),不需要重新編譯。為程序跨平臺(tái)的無(wú)縫移植提供了很大的便利。3.什么是虛擬機(jī)?解答:虛擬機(jī)(VirtualMachine,簡(jiǎn)稱JVM)是一臺(tái)虛擬計(jì)算機(jī),是通過(guò)在實(shí)際的計(jì)CPU指令,包括算術(shù)運(yùn)算、流控制和數(shù)組元素訪問(wèn)等。JVM的具體實(shí)現(xiàn)包括:指令集(等價(jià)于CPU的指令集)、寄存器組、類文件格式、棧、虛擬機(jī)規(guī)范提供了編譯所有代碼的硬件平臺(tái)。因JVM的代碼格式為壓縮的字節(jié)碼,因而效率較高。由JVM字節(jié)碼表示的程序必須保持執(zhí)行符合JVM定義的類文件格式的任何類文件。4.查閱API文檔,列出API文檔中4個(gè)包名。用到這4個(gè)包,后續(xù)章節(jié)中也會(huì)提及。5.查閱API文檔,列出.lang中4個(gè)類。到這4個(gè)類,后續(xù)章節(jié)中也會(huì)提及。6.查閱API文檔,列出.awt.event中4個(gè)接口。解答:.awt.event是處理事件的包,選出4個(gè)常用接7.查閱API文檔,列出.lang.Math類中4個(gè)常用方法。解答:lang.Math類中包含了許多常用函數(shù),選出4個(gè)常用方法如下。staticdoublerandom():返回大于等于0.0且小于1.0的一個(gè)正的double型值。8.查閱API文檔,列出.lang.String類中4個(gè)常用方法。booleanequals(ObjectanObject):將本串與指定對(duì)象anObject進(jìn)行比較。返回指定子串str在本串中第一次出現(xiàn)的索引。9.查閱API文檔,列出.util.Random類中2個(gè)常用方法。doublenextDouble):根據(jù)本隨機(jī)數(shù)生成器,從0.0到1.0之間、均勻分布的double型偽intnextInt(intbound):根據(jù)本隨機(jī)數(shù)生成器,從0(含)到指定值bound(不含)之間、10.查閱API文檔,列出.awt.Color類中2個(gè)構(gòu)造方法。Color(intr,intg,intb):使用指定的范圍在(0-255)間的紅色、綠色和藍(lán)色值r,g,b,創(chuàng)第二章數(shù)據(jù)和表達(dá)式一、單項(xiàng)選擇題1.以下選項(xiàng)中,能作為關(guān)鍵字的字符串的是【】A.defineB.typeC.includeD.switchdefine可以進(jìn)行宏定義,是C中預(yù)處理命令中的一種,在中已經(jīng)丟棄。C中使用include語(yǔ)句包含h文件,中使用的是import語(yǔ)句。switch用在多重分支語(yǔ)句中。參看教材第三章第二2.以下標(biāo)識(shí)符中,不是關(guān)鍵字的是【】A.waitB.newC.long使用new調(diào)用類的構(gòu)造方法來(lái)創(chuàng)建對(duì)象。long表示長(zhǎng)整型類型。switch是多分支語(yǔ)句,其用法參見(jiàn)教材第三章第三節(jié)的內(nèi)容。3.以下字符串中,能作為程序中的標(biāo)識(shí)符的是【】A.ValB.OK#C.2ValOK#中含有特殊字符#。2Val是以數(shù)字2開頭。catch是關(guān)鍵字。它們都不能用作標(biāo)識(shí)符。4.以下字符串中,能作為程序變量名的是【】A.defaultB.final變量名必須是一個(gè)合法的標(biāo)識(shí)符,CASE是全大寫的,全小寫的case是關(guān)鍵字,兩者是不相同的。default用在多重分支語(yǔ)句中,final用在異常處理語(yǔ)句中。long表示長(zhǎng)整型類型。5.下列選項(xiàng)中,能作為注釋的是【】類似的,選項(xiàng)D也是沒(méi)有結(jié)束標(biāo)記*/。選項(xiàng)C的結(jié)束標(biāo)記符號(hào)不正確。6.標(biāo)識(shí)符MAIN不能用作【】A.類名B.接口名C.程序名程序中,主函數(shù)名必須是main,且全小寫。MAIN是正確的標(biāo)識(shí)符,可以用作類名、接口7.不屬于基本數(shù)據(jù)類型的是【】記錄型是C中由程序員通過(guò)typedef定義的,中除了整型、浮點(diǎn)型、布爾型等基本數(shù)據(jù)類型外,程序員僅能定義類類型(由class標(biāo)識(shí))和接口(由interface標(biāo)識(shí))。8.以下數(shù)據(jù)類型轉(zhuǎn)換中,必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換的是【】int比char的位數(shù)多,所以不能進(jìn)行自動(dòng)類型轉(zhuǎn)換,必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換。選項(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.int→longD.byte→short10.以下選項(xiàng)中,不是轉(zhuǎn)義字符的是【】二、填空題1.用來(lái)聲明布爾變量(邏輯變量)的保留字是。2.方法內(nèi)定義的變量稱作答案:自動(dòng)變量,或是局部變量/臨時(shí)變量/棧變量。自動(dòng)變量需要由程序員為其初始化。3.邏輯與和邏輯或運(yùn)算符有一個(gè)特殊的功能,當(dāng)左側(cè)操作數(shù)能決定表達(dá)式的值時(shí),跳過(guò)右側(cè)操作數(shù)的運(yùn)算。這個(gè)功能是4.一個(gè)byte類型的操作數(shù)和一個(gè)int類型的操作數(shù)進(jìn)行運(yùn)算,結(jié)果的類型是不同類型的量進(jìn)行混合運(yùn)算時(shí),要先轉(zhuǎn)換為同一種類型,然后再進(jìn)行運(yùn)算。通常是位數(shù)少的類型轉(zhuǎn)換為位數(shù)多的類型。byte類型的操作數(shù)要先轉(zhuǎn)換為int類型的,進(jìn)行運(yùn)算后的類型也為int類型的。5.當(dāng)不同數(shù)值類型的數(shù)據(jù)進(jìn)行運(yùn)算時(shí),表示范圍較小的類型轉(zhuǎn)換為表示范圍較大的類型的轉(zhuǎn)換稱作。答案:自動(dòng)類型轉(zhuǎn)換。數(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)換稱作。不符合自動(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)制值是。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,即是4。8.表達(dá)式1==1>>>32;的值是_。移位運(yùn)算符>>>的優(yōu)先級(jí)高于比較運(yùn)算符==,所以先計(jì)算1>>>32。對(duì)于int型量,移位操作的位數(shù)對(duì)32取模,即1>>>32不移位,結(jié)果仍是1。這個(gè)結(jié)果再與1進(jìn)行比較,相等,所以結(jié)果是true。三、簡(jiǎn)答題1.支持的數(shù)據(jù)類型有哪些?列出中所有的基本數(shù)據(jù)類型。本數(shù)據(jù)類型共有8種,分為4小類,分別是邏輯型、字符型、整型和浮點(diǎn)型。復(fù)合數(shù)據(jù)類型類型,分別是:?jiǎn)尉雀↑c(diǎn)數(shù)float(4字節(jié))及雙精度浮點(diǎn)數(shù)double(8字節(jié))。關(guān)。例如,int型整數(shù)總是32位的,而不管是在Linux、Windows還是Android環(huán)境下。這4位十六進(jìn)制數(shù),范圍為0~65535。char類型的常量值必須用一對(duì)單引號(hào)(")括起來(lái)。例byte表示的數(shù)的范圍為-128~127,short表示的數(shù)的范圍為-32768~32767,int表示的數(shù)的范圍為-231~231-1,long表示的數(shù)的范圍為-23~23-1。整型常量可用十進(jìn)制、八進(jìn)制或十六進(jìn)制形式表示,以1~9開頭的數(shù)為十進(jìn)制數(shù),以0開頭的數(shù)為八進(jìn)制數(shù),以0x開頭的數(shù)為十六進(jìn)制數(shù)。中4種整型量都是有符號(hào)的。float表示的數(shù)的范圍約為1.4e??~3.4e3,double2.中常用的運(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)算符邏輯與邏輯或!邏輯非位運(yùn)算符&位與A位異或左移特殊運(yùn)算符對(duì)象實(shí)例字符串連接賦值條件運(yùn)算符或賦值3.中運(yùn)算符優(yōu)先級(jí)是如何定義的?舉例說(shuō)明。解答:將全部運(yùn)算符按從高到低劃分了15個(gè)等級(jí),每個(gè)等級(jí)中包含少則一個(gè)多則十余個(gè)的運(yùn)算符。比如,數(shù)組下標(biāo)運(yùn)算符,后綴形式的加1和減1運(yùn)算符具有最高優(yōu)先級(jí),擴(kuò)展次序。各運(yùn)算符的優(yōu)先次序見(jiàn)教材的表2-8。abstract,bit,boolean,case,character,comment,double,else,end,endy,float,for,generic,goto,if,implements,import,inner,instanceof,interface,line,ve,new,null,old,oper,outer,package,print,private,rest,return,short,static,suphronized,this,throw,throws,transient,var,void,volatile,abstract,boolean,case,double,else,false,final,finally,float,for,gmport,inner,instanceof,interface,long,native,new,null,outer,package,private,rt,static,super,switch,synchronized,this,throw,throws,transient,vbit,character,comment,end,endif,extend,line,loop,old,oper,print,var,w5.請(qǐng)敘述標(biāo)識(shí)符的定義規(guī)則。指出下面給出的字符串中,哪些不能用作標(biāo)識(shí)符,并說(shuō)明原(1)標(biāo)識(shí)符是以字母、下劃線(_)或美元符($)開頭,由字母、數(shù)字、下劃線(_)或美元符($)組成的字符串。僅能含有這些字符。(2)標(biāo)識(shí)符區(qū)分大小寫。(3)標(biāo)識(shí)符的長(zhǎng)度沒(méi)有限制。(4)注釋和空白不能插在一個(gè)標(biāo)識(shí)符之中。(5)有許多關(guān)鍵字,它們都有各自的特殊意義和用法,不得用它們作為標(biāo)識(shí)符。題目所給的標(biāo)識(shí)符中,不正確的有this和2tol,其中this是中的關(guān)鍵字,不能用作標(biāo)識(shí)6.轉(zhuǎn)義字符是什么?列舉幾個(gè)轉(zhuǎn)義字符。殊格式表示的有特殊含義的字符。表2-2中列出了幾個(gè)轉(zhuǎn)義字符。表2-2幾個(gè)轉(zhuǎn)義字符及其含義轉(zhuǎn)義字符含義退格鍵(Backspace換行符回車符水平制表符(Tab)反斜杠\\單引號(hào)'雙引號(hào)"7.中的類型轉(zhuǎn)換是指什么?支持變量數(shù)據(jù)間的自動(dòng)任意轉(zhuǎn)換,有時(shí)必須顯式地進(jìn)行變量類型的轉(zhuǎn)換。如果同為整數(shù)類型,或同為浮點(diǎn)數(shù)類型,那么,轉(zhuǎn)換的原則是位數(shù)少的類型可以轉(zhuǎn)換為轉(zhuǎn)換規(guī)則的類型轉(zhuǎn)換,都必須標(biāo)注出目標(biāo)類型的名字,這屬于強(qiáng)制類型轉(zhuǎn)換。8.>>>與>>有什么區(qū)別?舉例說(shuō)明。解答:提供兩種右移運(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,9.下列表達(dá)式中,找出每個(gè)操作符的計(jì)算順序,在操作符下按次序標(biāo)上相應(yīng)的數(shù)字。解答:在中,在對(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)算次序。各表中aa(+2+3ab/1b/11C3*2*2+2)ddC3d10.什么是變量聲明?解答:中,通過(guò)在對(duì)象類型后緊跟一個(gè)變量名來(lái)對(duì)變量進(jìn)行聲明。例如;intnum。變量聲明也叫變量說(shuō)明?!狙由扉喿x】根據(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)寫出程序片段的執(zhí)行結(jié)果。解答:>>>與>>都是右移運(yùn)算符,它們的不同之處在于使用不同位填充移位后左側(cè)的空白。>>運(yùn)算使用符號(hào)位填充左側(cè)的空位,而>>>使用零填充空位。也就是說(shuō),>>運(yùn)算保持操作數(shù)的符號(hào)不變,而>>>運(yùn)算則可能改變?cè)瓟?shù)的符號(hào)。分析上面的程序段。初始時(shí),b1和b2都是int型的變量,占32位,初值均為1,兩個(gè)變量分別向左移動(dòng)31位,兩個(gè)值變?yōu)椋?0000000000000000000000000000000,在計(jì)算機(jī)使用>>運(yùn)算符將bl向右移動(dòng)任何位,它的值都不使用>>>運(yùn)算符則有所不同。>>>使用零填充左側(cè)的空位,所以將b2向右移動(dòng)31位后,它的值為:00000000000000000000000000000001,即b2的值為1。再向右移動(dòng)1位,則它的值為:00000000000000000000000000000000,即b2的值為0。第三章流程控制語(yǔ)句include語(yǔ)句是C中用來(lái)包含頭文件的語(yǔ)句。中引入包的語(yǔ)句是import語(yǔ)句。A.break語(yǔ)句B.continue語(yǔ)句C.goto語(yǔ)句D.for語(yǔ)句goto語(yǔ)句使得程序的執(zhí)行流程混亂,程序的易讀性降低,中已經(jīng)不再使用該語(yǔ)句。3.設(shè)i的初值為6,則執(zhí)行完j=i-;后,i和j的值分別為【】A.6,6B.6,5C.5,6給j賦值時(shí),使用的是i原來(lái)的值,即6。賦值后,i的值減1,為5。4.在一個(gè)if語(yǔ)句中,下列選項(xiàng)中正確的是【】C.if的個(gè)數(shù)一定少于else的個(gè)數(shù)D.if的個(gè)數(shù)可能多于else的個(gè)數(shù)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.continuebreak語(yǔ)句,保證執(zhí)行了該塊中的語(yǔ)句后控制流轉(zhuǎn)到switch語(yǔ)句之后繼續(xù)執(zhí)行。如果進(jìn)入最后一個(gè)case塊執(zhí)行,則寫不寫break語(yǔ)句,控制流都轉(zhuǎn)到switch語(yǔ)句之后,所以這個(gè)break7.switch語(yǔ)句中,如果沒(méi)有相匹配的條件,則執(zhí)行【】A.任一個(gè)case后的語(yǔ)句B.default之后的語(yǔ)句A.ClassNotFoundExceptionB.ArithmeticExceptionC.FileNotFoundExceptionD.IOException9.下列選項(xiàng)中,與try語(yǔ)句配套使用的語(yǔ)句是【】A.defaultB.catchC.breakD.casetry-catch語(yǔ)句是異常處理語(yǔ)句,用try語(yǔ)句括住可能會(huì)出現(xiàn)異常的語(yǔ)句,后面使用catch語(yǔ)句A.defaultB.catchcatch語(yǔ)句的最后通常是finally語(yǔ)句。不論是否捕獲到異常,都要執(zhí)行finally后面的語(yǔ)句。I和Ⅲ中,使用的分別是&和運(yùn)算符,這是位運(yùn)算符,沒(méi)有短路功能,所以&或運(yùn)算符的前后子表達(dá)式都要執(zhí)行。如果s是空串,則調(diào)用s.length()時(shí)會(huì)發(fā)生異常。Ⅱ和IV中,使用的是邏輯運(yùn)算符&&和|,具有短路功能。對(duì)于具有短路功能的運(yùn)算符,如果運(yùn)算符前面的子表已經(jīng)能夠決定整個(gè)表達(dá)式的結(jié)果為true,不用去計(jì)算s.length(),所以二、填空題2.能替換if語(yǔ)句的語(yǔ)句是if語(yǔ)句與switch語(yǔ)句都是分支語(yǔ)句,switch語(yǔ)句中的表達(dá)式與if語(yǔ)句中的條件表達(dá)式不完全3.switch語(yǔ)句中,表示條件的表達(dá)式只能是類型或類型。5.流控制語(yǔ)句有3類,對(duì)應(yīng)于順序流的語(yǔ)句是流控制分為3類:順序流、循環(huán)流和分支流。對(duì)應(yīng)于順序流的是賦值語(yǔ)句。這3種語(yǔ)句都是循環(huán)語(yǔ)句。這兩種語(yǔ)句都是分支語(yǔ)句。8.如果想使用其他包中的類,則需要在程序的開頭使用語(yǔ)句。]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è)break語(yǔ)句不寫,則程序執(zhí)行時(shí)的輸出是什么?舉例說(shuō)明。解答:如果某個(gè)break語(yǔ)句不寫,則當(dāng)前執(zhí)行的case塊執(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)不寫break語(yǔ)句,即不寫第一個(gè)break語(yǔ)句,則當(dāng)輸入命令行第一個(gè)參數(shù)的首字符是數(shù)字時(shí),比如輸入“234”,那么輸條輸出是不應(yīng)該出現(xiàn)的。3.請(qǐng)說(shuō)明嵌套的if語(yǔ)句中,else語(yǔ)句的對(duì)應(yīng)規(guī)則。解答:規(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á)式寫在前面,do-while中條件表達(dá)式寫在后面。兩種語(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ùn)行中可能遇到的錯(cuò)誤分為兩類,其中一類是非致命性的,通過(guò)某種修正后程序還能繼續(xù)執(zhí)行。這類錯(cuò)誤稱作異常(Exception)。生成的異常對(duì)象傳遞給運(yùn)行時(shí)系統(tǒng),運(yùn)行時(shí)系統(tǒng)尋找相應(yīng)的代碼來(lái)處理這一異常。生成異常對(duì)象并把它提交給運(yùn)行時(shí)系統(tǒng)的這一過(guò)程稱為拋出(throw)一個(gè)異常。運(yùn)行時(shí)系統(tǒng)從生成對(duì)象的代碼塊開始進(jìn)行回溯,沿方程稱為捕獲(catch)。7.是如何處理異常的?地,當(dāng)發(fā)生異常時(shí),有3種方法可以處理拋出的異常。(1)可以忽略它,這將導(dǎo)致程序中斷,并輸出一條信息。(2)在發(fā)生異常的地方處理它。根據(jù)異常所屬的類,找到對(duì)應(yīng)的catch語(yǔ)句,然后執(zhí)行其后的語(yǔ)句序列,完成對(duì)異常的處理,恢復(fù)(3)運(yùn)行時(shí)系統(tǒng)從生成異常對(duì)象的代碼塊開始,沿方法的調(diào)用棧逐層回溯,在調(diào)用層次中更高層的方法中捕獲并處理異常。8.try及catch語(yǔ)句的作用是什么?語(yǔ)法格式如何?解答:對(duì)于可能拋出異常的代碼段,要使用try語(yǔ)句括住,用catch語(yǔ)句指明要捕獲的}其中,異常類型1、異常類型2、…、異常類型k是產(chǎn)生的異常類型。根據(jù)發(fā)生異常所屬的類,找到對(duì)應(yīng)的catch語(yǔ)句,然后執(zhí)行其后的語(yǔ)句序列,完成對(duì)異常的處理,恢復(fù)程序的執(zhí)9.在什么情況下執(zhí)行try語(yǔ)句中finally后面的代碼段?在什么情況下不執(zhí)行?解答:在執(zhí)行try語(yǔ)句時(shí),不論是否捕獲到異常,都要執(zhí)行finally后面的語(yǔ)句。try后面大括號(hào)({})中的代碼稱為保護(hù)代碼。如果在保護(hù)代碼內(nèi)執(zhí)行了System.exit()方法,則程序?qū)⑼顺?,此時(shí)不執(zhí)行finally后面的語(yǔ)句,這是不執(zhí)行finally后面語(yǔ)句的唯一一種情況。10.你能說(shuō)出中常見(jiàn)的幾個(gè)異常嗎?它們表示什么意思?在什么情況下引起這些異常?(1)ArithmeticExceptio整數(shù)除法中,如果除數(shù)為0,則發(fā)生該類異常。虛擬機(jī)遇到這樣的錯(cuò)誤時(shí)會(huì)自動(dòng)中止程下面的程序?qū)⒁l(fā)ArithmeticException異常。result=numerator/denomi}(2)NullPointerException如果一個(gè)對(duì)象還沒(méi)有實(shí)例化,那么訪問(wèn)該對(duì)象或調(diào)用它的方法時(shí)將導(dǎo)致NullPointerException異常。因此使用一個(gè)變量前,要先檢查一下它是否為null。第一行創(chuàng)建了有4個(gè)元素的數(shù)組im,每個(gè)元素都是image類型的,系統(tǒng)為其進(jìn)行初始化,每個(gè)元素中的值為null,表明它還沒(méi)有指向任何實(shí)例。第二行要訪問(wèn)im[0],由于訪問(wèn)如果元素個(gè)數(shù)是個(gè)負(fù)數(shù),則會(huì)引發(fā)NegativeArraySizeException異常。據(jù)length值自動(dòng)檢查下標(biāo)的大小。如果數(shù)組下標(biāo)越界,則將導(dǎo)致11.以下語(yǔ)句要打印從7開始不大于7的正奇數(shù),但程序中有錯(cuò)誤,請(qǐng)改正,然后寫出此循當(dāng)打印完值1后,k值修改為-1,而且后面的執(zhí)行只會(huì)使k值越來(lái)越小,永遠(yuǎn)不會(huì)等于0,即(k!=0)永遠(yuǎn)為true,循環(huán)會(huì)一直執(zhí)行下去,進(jìn)入死循環(huán)。循環(huán)次數(shù)是4次。四、程序填空題1.某人以年利率r向銀行存款m元,一年后存款額為m*(1+r),他想知道存多少年后,存款額會(huì)達(dá)到原來(lái)的k倍。以下方法已知m、r和k,計(jì)算至少多少年后存款額大于等于m*k。解答:①money<=m*k2.方法voidFibonacci(intm)的功能是輸出不大于m的Fibonacci數(shù)列中的元素。注:Fibonacci數(shù)列的前兩個(gè)數(shù)都是1,從第三個(gè)數(shù)開始,數(shù)列的每個(gè)數(shù)是其前面兩個(gè)數(shù)之和。voidFibonacci(intm)解答:①return五、程序設(shè)計(jì)題稱為n的階乘,并且規(guī)定0!=1。試編制程序計(jì)算2!,4!,6!,8!和10!,并顯示計(jì)算結(jié)果。解答:階乘函數(shù)這是一個(gè)遞歸定義,因?yàn)殡A乘本身又出現(xiàn)在階乘的定義中。對(duì)于所有的遞歸定義,一定要有一個(gè)遞歸結(jié)束的出口,這既是定義的最基本情況,也是程序執(zhí)行遞歸結(jié)束的地方。本定義中的第一行即是遞歸出口。當(dāng)一個(gè)函數(shù)使用遞歸定義的時(shí)候,往往直接使用遞歸方法實(shí)現(xiàn)它。階乘的遞歸實(shí)現(xiàn)如下//輸出結(jié)果分析式子可以看出,S是由n項(xiàng)相加得到的。所以循環(huán)體的執(zhí)行次數(shù)為n。S的初始值為0,循環(huán)變量i從1增大到n,將1/i加到S中,即可得到最終結(jié)果。}3.已知變量n,請(qǐng)寫出使用for語(yǔ)句計(jì)!代碼。分析式子可以看出,S是由n+1項(xiàng)相加得到的??梢詫的初始值設(shè)置為1,即第1項(xiàng)的值。這樣,循環(huán)體的執(zhí)行次數(shù)為n。循環(huán)變量i從1增大到n,將1/(3xi)加到S中,即可得到最終結(jié)果。}4.編寫程序打印下面的圖案。解答:從圖中可以看出,該圖以中間行為基準(zhǔn),上下對(duì)稱。首先看看要打印的總行數(shù),如果每行都不同,則需要定制各行的打印內(nèi)容。如果有重復(fù)或是對(duì)稱內(nèi)容的話,則可以簡(jiǎn)化語(yǔ)句的處理。觀察本題中要輸出的內(nèi)容,一共要輸出7行,以initNum變量來(lái)表示。第1行和第7行一樣,第2行和第6行一樣,第3行和第5行一樣,實(shí)際上只需要定制4個(gè)不同的行即可。從1開始計(jì)行號(hào)。各行的星號(hào)數(shù)與行號(hào)i的關(guān)系為:當(dāng)i<=(initNum+1)/2,相應(yīng)行的星號(hào)之間有兩個(gè)空格。再看每行最左側(cè)的空格數(shù)與行號(hào)的關(guān)系:當(dāng)i<=(initNum+1)/2,相應(yīng)行PrintAstpa=newPrintAst();intinitNum=7;for(intm=1;m<=3*(i-1);for(intm=21-3*i;m>0;m-)pa.printSpace();for(intk=1;k<=2*i-initNum;k++)pa.printAstar();publicvoidprintAstar){System.out.printpublicvoidprintSpace(){System.out.prin5.編寫程序打印下面的圖案。水*同樣地,需要先判定輸出的總行數(shù),本題中是10行。接下來(lái),確定每行輸出的星號(hào)數(shù)及起始位置。從圖中看出,起始位置都是從第一列開始。第一行輸出10個(gè)星號(hào),以后逐行遞減程序?qū)崿F(xiàn)如下:publicstaticvoidmain(for(intj=0;j<initNum-i;j++)//總共輸出10行解答:乘法口訣表是學(xué)習(xí)算術(shù)時(shí)入門級(jí)的知識(shí),主要內(nèi)容是10以內(nèi)的兩個(gè)數(shù)相乘的結(jié)publicstaticvoidmain(String[]ar{MultipleTablemt=newfor(intk=1;k<i;k++){//輸出共9行res=i*j;publicvoidprintFormula(i{if(res>9){//對(duì)齊7.編寫程序,要求判斷從鍵盤輸入的字符串是否為回文(回文是指自左向右讀與自右向左如何判斷一個(gè)字符串是回文呢?有很多的方法,下面介紹其中比較簡(jiǎn)單的兩種實(shí)現(xiàn)。方法二:設(shè)字符串為w,將字符串全部反轉(zhuǎn)變?yōu)閣l。例如字符串“abcdefg”反轉(zhuǎn)后的if(str[i]==str[j])net++;}InputStreamReaderreader=newIn}catch(IOExceptione){//IOException是個(gè)標(biāo)準(zhǔn)異常booleanbw=hw1.isHuiWen(pm.toCharArray),pm.length());System.out.println("Itisnothuiwe第二種方法可以讓讀者熟悉字符串及字符數(shù)組的使用,其實(shí)現(xiàn)程序如下:/分配一個(gè)新的字符數(shù)組}HuiWen2hwl=newHuiWen20;InputStreamReaderreader=newInSystem.out.print("give8.編寫程序,判斷用戶輸入的數(shù)是否為素?cái)?shù)。素?cái)?shù)是指只能被1和自身整除的正整數(shù)。解答:素?cái)?shù)是只能被1和本身整除的整數(shù)。換句話說(shuō),除1和本身外,素?cái)?shù)沒(méi)有其他因子。這點(diǎn)可以作為判定素?cái)?shù)的規(guī)則。對(duì)于一個(gè)正整數(shù)n,如果2~n-1之間的任何一個(gè)整數(shù)都不能整除n,則n為素?cái)?shù)。進(jìn)一步的分析可知,僅需判定2~√n之間的任何一個(gè)整數(shù)都不能整除n,即可判定n為素?cái)?shù)。這樣可以減少循環(huán)的執(zhí)行次數(shù)。if(pm%i=0){}}publicstaticvoidmain(Stringargs[InputStreamReaderreader=newIni=Integer.valueOf(inpubooleanbl=prim.isPrim9.編寫程序,將從鍵盤輸入的華氏氏溫度轉(zhuǎn)換為攝氏溫度。同樣地,因?yàn)橐幚礞I盤輸入,所以添加了異常處理。轉(zhuǎn)換程序的實(shí)現(xiàn)如下:TempConvertertc=ntry{/定義輸入源InputStreamReaderreader=newInSystem.out.print("giveyourfahtmp=Double.valueOf(input.readLine());//將輸入轉(zhuǎn)為雙精度數(shù)System.out.println("thecelsiusof10.編寫程序,讀入一個(gè)三角形的三條邊長(zhǎng),計(jì)算這個(gè)三角形的面積,并輸出結(jié)果。提示:設(shè)三角形的三條邊長(zhǎng)分別是a、b、c,則計(jì)算其面積的公式為:解答:根據(jù)平面幾何的理論,當(dāng)三個(gè)數(shù)能夠滿足任意兩數(shù)之和大于第三個(gè)數(shù)及任意兩數(shù)之差小于第三個(gè)數(shù)時(shí),這三個(gè)數(shù)才能構(gòu)成三角形的三條邊。由三條邊的邏輯關(guān)系,當(dāng)上述條件滿足一個(gè)時(shí),另外一個(gè)也必然滿足。因此只需要判定任兩邊之和大于第三邊即可。根據(jù)題義,程序中定義了Trigsquare類,該類包括三角形的三條邊這三個(gè)屬性,以及判斷是否能構(gòu)成三角形的isTriangle()方法和求解三角形面積的getArea()方法。程序?qū)崿F(xiàn)如下://x、y、z分別為3條邊publicbooleanisTriifthis.x>0&&this.y>0&&this.z>0){//必須是3個(gè)正數(shù),邊長(zhǎng)不能是負(fù)值if((this.x+this.y)>this.z&&//任意兩邊publicdoublegetAreturm(Math.sqrt(s*(s-this.x)*(s-this.y)*(s-thidoubles[]=newdouble[3];//使用一個(gè)數(shù)組存放3個(gè)數(shù)InputStreamReaderreader=newInputStreamReader(System.in);System.out.print("輸入3個(gè)數(shù),每行輸入一個(gè):n");for(inti=0;i<3;i++){//輸入3個(gè)數(shù),每行輸入一個(gè)Trigsquarets=newTrigsquare(s[0],s[1],s[2]);System.out.println("thenumbersinputcannotbeatr2)從鍵盤輸入一個(gè)日期,屏幕上回答是星期幾,也以當(dāng)年為例。3)從鍵盤輸入兩個(gè)日期,計(jì)算這兩個(gè)日期之間含有多少天。一些基本的方法。本例從GregorianCalendar類派生一個(gè)類MyCalender,創(chuàng)建它的實(shí)例以得到某個(gè)月的月歷。計(jì)算星期幾則采用Calendar類中定義的DAYOFWEEK常量來(lái)得到,由diff=(datel.getTime()-date2.getTime程序?qū)崿F(xiàn)如下:{c=newGregorianCalendar(//閏年的2月份天數(shù)System.out.println("--------Calendar:"+yeintfirst=c.get(Calendar.DAY_OF_WEEK);//1日在星期幾for(i=1;i<first;i++)System.out.print("");//1日之前的空白if(first++%7==0)System.ouc=newGregorianCalendar(year,month-1,date);intday=c.get(Calendar.DAY_OF_WEEK);//返回該日期是星期幾publicintdiffDate(.utilreturnMath.abs((int)((datel.getTime()-date2.getTime())/(24*3600*1000)));InputStreamReaderreader=newInpm=Integer.parselnt(input.readLin}catch(NumberFormatExceptionne){InputStreamReaderreader=newInMyCalendermc=newMyCalender();count=mc.inputNum();//選項(xiàng)號(hào),有4種System.out.print("inputthemonth(1-12):");.util.Datemydate1=new.ut.util.Datemydate2=new.utSystem.out.print("pleaseinputStringdl=mc.inputDmydatel=myFormatter.parse(d1);mydate2=myFormatter.pa+mc.diftDate(mydatel}//endofwhile出這個(gè)值的最佳可能,要求使用的幣值個(gè)數(shù)最少。例如,給出1.46元,將得到下列結(jié)果:1.46元=的人民幣有如下面值:1元、5角、2角、1角、5分、2分、1分。publicstaticvoidmain(/分別對(duì)應(yīng)的錢幣的值,以分為單位InputStreamReaderisBufferedReaderbr=newBuasval=Integer.parselSystem.out.println("輸入的不是數(shù)值!");}System.out.println(val[i]+"分的個(gè)數(shù):"+num[i]);13.請(qǐng)編寫方法intrevInt(intk),該方法的功能是返回與十進(jìn)制正整數(shù)k的數(shù)字順序相反排列的正整數(shù)。如已知正整數(shù)是1234,則方法的返回值是4321。解答:要讓整數(shù)按各位反序重排,需要依次取得原數(shù)的各數(shù)位,再拼成一個(gè)整數(shù)。可以從右向左依次取各個(gè)數(shù)位的值。以1234為例,取得的值是4、3、2、1。再將這些值拼起來(lái),比如先得到的是4,temp=4,然后計(jì)算temp×10+3再賦給temp,得到temp=43。繼續(xù)temp×10+2,得到temp=432,再繼續(xù)tempx10+1,得到temp=4321。對(duì)于整數(shù)k,kmod10的結(jié)果即得到k的個(gè)位,將這個(gè)值添加到目標(biāo)值temp的最后一k=k/10;14.使用.lang.Math類,生成100個(gè)0~99之間的隨機(jī)整數(shù),找出它們之中的最大者及最小者,并統(tǒng)計(jì)大于50的整數(shù)個(gè)數(shù)。該方法返回一個(gè)0.0~1.0之間的小數(shù),如果要得到其他范圍的數(shù),則需要進(jìn)行相應(yīng)的轉(zhuǎn)換,例如想得到一個(gè)0~99之間的整數(shù),可以使用下列語(yǔ)句:intnum=(int)(100×Math.random());解答:提示中已經(jīng)說(shuō)明了,可以使用Math.random()方法得到隨機(jī)數(shù),但這個(gè)隨機(jī)數(shù)是一個(gè)0.0~1.0之間的浮點(diǎn)數(shù),首先需要將數(shù)的范圍變化到0~99之間,然后再將得到的數(shù)轉(zhuǎn)程序中,使用了兩個(gè)變量MAXof100、MINof100分別記錄這100個(gè)整數(shù)中的最大值和最小值。先生成前兩個(gè)隨機(jī)整數(shù),較大者放入MAXof100中,較小者放入MINof100中。隨后使用一個(gè)循環(huán)生成剩余的98個(gè)隨機(jī)整數(shù),然后分別與MAXof10新生成的數(shù)如果大于MAXof100,則將MAXof100修改為新的數(shù)。同樣如果新生成的數(shù)小于MINof100,則讓MINof100記下這個(gè)數(shù)。程序中使用count記錄大于50的隨機(jī)數(shù)的個(gè)數(shù),初始時(shí),它的值為0。{MAXof100=(int)(100*Math.MINof100=(int)(100*Math.rSystem.out.print(MAXof100+"");num=MINof100;MAXof100=num;num=(int)(100*Math.rand//控制每輸出10個(gè)數(shù)即換行/l更小的數(shù)記入MINof100//記錄下大于50的個(gè)數(shù)System.out.println("Thenumberofrandom第四章面向?qū)ο蟪绦蛟O(shè)計(jì)1.假設(shè)滿足訪問(wèn)權(quán)限的前提下,下列關(guān)于實(shí)例方法和靜態(tài)方法的說(shuō)法中,錯(cuò)誤的是【】B.靜態(tài)方法能直接引用靜態(tài)變量C.實(shí)例方法能直接引用實(shí)例變量D.靜態(tài)方法能直接引用實(shí)例變量2.下列關(guān)于實(shí)例方法和靜態(tài)方法的敘述中,正確的是【】B.類中的靜態(tài)方法可以直接調(diào)用實(shí)例方法D.類中的靜態(tài)方法不可以互相調(diào)用實(shí)例方法之間可以互相調(diào)用,靜態(tài)方法之間也可以互相調(diào)用,所以選項(xiàng)A和D都排除了。那么實(shí)例方法和靜態(tài)方法之間的調(diào)用關(guān)系是什么樣的呢?要調(diào)用實(shí)例方法必須通過(guò)對(duì)象,而3.下列選項(xiàng)中,不是構(gòu)造方法特點(diǎn)的是A.構(gòu)造方法的名字與類名相同B.構(gòu)造方法可以從父類繼承C.構(gòu)造方法中要為所有的變量賦初值A(chǔ).構(gòu)造方法可以有多個(gè)B.構(gòu)造方法沒(méi)有返回值類型C.構(gòu)造方法的參數(shù)列表可以不同D.構(gòu)造方法的調(diào)用方式與普通方法相同構(gòu)造方法不能由程序員任意調(diào)用,實(shí)際上,僅在創(chuàng)建對(duì)象時(shí)由系統(tǒng)調(diào)用。A.方法名B.方法參數(shù)個(gè)數(shù)C.方法返回值類型D.方法參數(shù)的類型1.方法簽名包括方法名稱加上方法的。2.同一個(gè)類中多個(gè)方法有相同的名字及不同的參數(shù)列表,這種情況稱為。3.每個(gè)類都有一類特殊的方法,稱為。4.程序中調(diào)用方法時(shí),參數(shù)傳送采用的機(jī)制是1.類是如何定義的?解釋類的特性及它的幾個(gè)要素。的類根據(jù)實(shí)現(xiàn)功能的不同,劃分成不同的集合,每個(gè)集合稱為一個(gè)包。核心API中有眾多的包。些可利用的手段,即可通過(guò)哪些函數(shù)來(lái)操作這些數(shù)據(jù)。修飾符class類名[extends父類名]{修飾符類型成員變量1;修飾符類型成員變量2;修飾符類型成員方法1(參數(shù)列表)方法體}修飾符類型成員方法2(參數(shù)列表)(類型局部變量方法體}類定義的第一行是類頭,關(guān)鍵字class表明這里定義的是一個(gè)類。class前的修飾符允許類名是用戶為該類所起的名字,它應(yīng)該是一個(gè)合法的標(biāo)識(shí)符,并盡量遵從命名約定。extends是關(guān)鍵字。如果所定義的類是從某一個(gè)父類派生而來(lái),那么,父類的名字應(yīng)寫在extends之后。如果不寫的話,則表明隱式繼承于Object類。不允許多重繼承,所以如果它可以被同一個(gè)包中的對(duì)象使用。類還可以是final的,表明它不可以再有子類,與之相對(duì)2.在程序中,類和對(duì)象有什么區(qū)別?以是不同的。所以每個(gè)對(duì)象有區(qū)別于其他對(duì)3.static關(guān)鍵字是什么意思?4.什么叫做靜態(tài)方法和靜態(tài)變量,它們同普通的成員方法和成員變量之間有何區(qū)別?如果在創(chuàng)建類的對(duì)象實(shí)例前就需要調(diào)用類中的某個(gè)方法,那么將該方法標(biāo)記static關(guān)鍵字即可實(shí)現(xiàn)。標(biāo)記了static關(guān)鍵字的方法稱為靜態(tài)方法,或稱類方法。個(gè)變量,也就是對(duì)任何一個(gè)實(shí)例來(lái)講,這個(gè)屬性的值都是一樣的。這樣的變量稱為類變量,也叫靜態(tài)變量??梢哉f(shuō)靜態(tài)變量被類的多個(gè)靜態(tài)變量和靜態(tài)方法與普通的成員變量和成員方法間的區(qū)別主要體現(xiàn)在以下幾方面:(1)類的每個(gè)對(duì)象具有它自己的、在類中定義的所有實(shí)例變量的副本,但對(duì)于靜態(tài)變(2)靜態(tài)變量的生命期和實(shí)例變量的生命期也是不同的,每次實(shí)例化一個(gè)對(duì)象時(shí),都量從某種意義上來(lái)說(shuō)相當(dāng)于其他程序設(shè)計(jì)中(3)在使用上,成員方法與靜態(tài)方法的形式也不一樣。靜態(tài)方法可以通過(guò)一個(gè)指向類(4)靜態(tài)方法中不能使用this和super關(guān)鍵字,不能調(diào)用非靜態(tài)方法,只能訪問(wèn)所屬5.什么情況下使用靜態(tài)變量?用的訪問(wèn)。8.new操作符完成哪些功能?解答:new運(yùn)算符創(chuàng)建指定類的一個(gè)新實(shí)例(對(duì)象)。然后調(diào)用類的構(gòu)造方法設(shè)置新生9.中訪問(wèn)控制權(quán)限分為幾種?它們所對(duì)應(yīng)的表示關(guān)鍵字分別是什么?意義如何?默認(rèn)。這些修飾符既可以用來(lái)修飾類,又可以用●public:用public修飾的成分表示是公有的,也就是它可以被其他任何對(duì)象訪問(wèn)?!駊rivate:和它的名字“私有”一樣,類中限定為private的成員只能被這個(gè)類本身●protected:用該關(guān)鍵字修飾的成分是受保護(hù)的,只可以被同一包內(nèi)的類及其子類的這3個(gè)限定符不是必須寫的,如果不寫,則表明是默認(rèn)的,相應(yīng)的成分可以被所在包中訪問(wèn)權(quán)限修飾符列在表4-1中。表4-1訪問(wèn)權(quán)限修飾符類型無(wú)修飾符同一類是是是是同一包中的子類是否是是同一包中的非子類是否是是不同包中的子類否否是是不同包中的非子類否否否是10.什么是自動(dòng)裝箱、自動(dòng)拆箱?解答:自動(dòng)將基本數(shù)據(jù)類型轉(zhuǎn)為對(duì)應(yīng)的包裝類的過(guò)程稱為自動(dòng)裝箱(Autoboxing)。逆向的自動(dòng)轉(zhuǎn)換稱為自動(dòng)拆箱(unboxing)。1.閱讀下列程序,請(qǐng)寫出該程序的輸出結(jié)果。voidchange3(PassTeSystem.out.printIn("Currentpt.類assTest中定義了3個(gè)方法,都是在方法內(nèi)對(duì)帶入的參數(shù)進(jìn)行修改,為的是考查修改changel的參數(shù)是int型變量,帶入的實(shí)參是整型變量i,值是22。changel內(nèi)將形參值修改為100,退出返回到main中后,變量i的值不會(huì)改變。為"Right",退出后,變量s的值也不會(huì)改變。change3的參數(shù)是PassTest類型,帶入的實(shí)參是對(duì)象pt,實(shí)際上帶入的是pt的地址。在change3內(nèi)改變的是參數(shù)對(duì)象中的一個(gè)成員變量的值。返回后,實(shí)參地址沒(méi)有變化,但這個(gè)引用所指向的內(nèi)存塊內(nèi),對(duì)應(yīng)成員變量的值改變了。voidchangel(intpi){pi=100;System.out.println("函數(shù)內(nèi)的形參pi的地址是:"+System.identityHashCode(pi));System.out.println("函數(shù)內(nèi)的形參ps的地址是:"+System.identityHashCode(ps)):}po.m_float=100.0f;System.out.println("函數(shù)內(nèi)的形參po的地址是:"+System.identityHashCode(po));System.out.println("函數(shù)外的實(shí)參i的地址是:"+System.identityHashCoSystem.out.println("函數(shù)外的實(shí)參pt的地址是:"+System.identityHashCode(pt));System.out.printIn("Currentpt.m_floatis"+pt.m函數(shù)外的實(shí)參i的地址是:1159190947函數(shù)內(nèi)的形參pi的地址是:1528902577函數(shù)外的實(shí)參s的地址是:1927950199函數(shù)外的實(shí)參pt的地址是:9891100442.閱讀下列程序,請(qǐng)寫出該程序的輸出結(jié)果。}}publicclassjex6_8{System.out.println(qSystem.out.println(q2.System.out.printIn(q3.}構(gòu)造方法中要對(duì)成員變量賦初值,不同的構(gòu)造方法可以有不同的賦初值的過(guò)程。對(duì)象使用固定值10和20進(jìn)行賦值。創(chuàng)建對(duì)象q3時(shí)帶了一個(gè)本類類型的實(shí)參,所以調(diào)用的是第三個(gè)構(gòu)造方法。使用實(shí)參的成員變量的值為新構(gòu)造的對(duì)象賦值。因?yàn)槭窃谕粋€(gè)類中,可以在第三個(gè)構(gòu)造方法中直接訪//直接訪問(wèn)r//直接訪問(wèn)r的成員變量,而不是使用r.width)//直接訪問(wèn)r的成員變量,而不是使用rheight)}1.設(shè)計(jì)并實(shí)現(xiàn)一個(gè)Course類,它代表學(xué)校中的一門課程。按照實(shí)際情況,將這門課程的相最后使用主函數(shù)測(cè)試這個(gè)類,并修改課程的學(xué)分。/定義課程類別Course(StringcourselD,StrinStringcourseType,intclasthis.courseID=courseID;this.courseName=cthis.courseType=courseType;this.classHour=classHour;publicvoidsetCredit(fthis.credit=credit;/得到課程學(xué)分?jǐn)?shù)System.out.println("TSystem.out.println(System.out.println("couSystem.out.printIn("courSystem.out.println("classHSystem.out.println("cSystem.out.println("-----------------------publicstaticvoidmain(Stringl)args){//System.out.println("----------------------cs.setCredit(4.0f);//修改課程學(xué)分,由3分改為4分2.完善例4.10中類Point的定義,增加幾個(gè)基本方法,例如計(jì)算給定點(diǎn)到(0,0)的距離、給定兩點(diǎn)間的距離、判斷給定的三個(gè)點(diǎn)是否能構(gòu)成一個(gè)等腰三角形等。解答:點(diǎn)的橫縱坐標(biāo)表示為(x,y),該點(diǎn)到原點(diǎn)的距離d表示為給定兩個(gè)點(diǎn)的橫縱坐標(biāo)分別為(xj,yi)和(x?,y?),則兩個(gè)點(diǎn)間的距離d表示為調(diào)用Math包中的函數(shù)sqrt,可以計(jì)算開平方。對(duì)于給定的三個(gè)點(diǎn),根據(jù)坐標(biāo)可以計(jì)算三個(gè)點(diǎn)之間的距離。三條邊能構(gòu)成三角形的條件是:任何兩邊之和大于第三邊,或是任意兩邊之差小于第三邊。等腰三角形的條件是,其中兩條邊的長(zhǎng)度相等。程序?qū)崿F(xiàn)如下:Point(doublex1,doubley1){publicvoidsetX(doublexl)result=Math.sqrt((tempx*tempx+tempy*tempy));doubletempx1,tempy1,tempx2,tempy2;result=Math.sqrt(tempx1-tempx2)*(tempx1-tempx2)+(tempy1-tempy2)*(tempb=p2.TwoPointDistance(if(((a+b>c)&&(b+c>a)&&(b==c||a==c))result=true;System.out.println("}}Point(Pointp){//獲取橫坐標(biāo)//獲取橫坐標(biāo)//構(gòu)造方法1,兩個(gè)默認(rèn)端點(diǎn)MyLine(Pointpl,Pointp2)}doublex1,yl,x2,y2;//構(gòu)造方法2,兩個(gè)端點(diǎn)//構(gòu)造方法3,從原點(diǎn)出發(fā)的線段publicbooleanIsOnLine(Pointp)if((p.getYO-y1)/(y2-yl)=(p.getX)-x1)(publicdoubledisPL(Point}publicstaticvoidmain(SSystem.out.println(booleanresult=line.Is4.設(shè)計(jì)并實(shí)現(xiàn)一個(gè)MyCircle類,它表示圓。圓心及半徑是它的屬性,定義一些基本方法,解答:圓的面積、周長(zhǎng)的計(jì)算都非常簡(jiǎn)單。如果圓心之間的距離大于兩個(gè)圓半徑之和,則兩個(gè)圓是相離的。否則就是相交的。本題中,用到了題2中的Point類和題3中的MyLine類。程序?qū)崿F(xiàn)如下:}}}}}}}publicdoubleTwoPointDistance(Pointp){//求到另一點(diǎn)的距離}e2=newPoint(0.0,0.}//線段的兩個(gè)端點(diǎn)//構(gòu)造方法1,兩個(gè)默認(rèn)端點(diǎn)MyLine(Pointpl,PoinMyLine(Pointpl){//構(gòu)造方法2,兩個(gè)端點(diǎn)//構(gòu)造方法3,從原點(diǎn)出發(fā)的線段publicbooleanIsOnLinif(p.getYO-y1)/(y2-y1)=(p.getX()-x1)/(dis=Math.abs(a*p.getX()+b*p.getYO+c)/Ma}}publicbooleanIsOverlap(MyCirclemc){dis=this.getCenter().TwoPointDif(dis<=this.getRadius()+mc.getRadius())returntrue;publicvoidLineAndCircle(MyLinePointp=newPoint(x,y);MyCirclemy2=newMyCircle(p,r);第五章數(shù)組和字符串等號(hào)左側(cè)的方括號(hào)與數(shù)組名的位置是可以交換的,故4個(gè)選項(xiàng)中等號(hào)左側(cè)的格式都是允許的。對(duì)于二維數(shù)組,等號(hào)右側(cè)是兩對(duì)方括號(hào),選項(xiàng)A中只有一對(duì)方括號(hào)。2.下列選項(xiàng)中,能夠?qū)嵗粋€(gè)數(shù)組的是A.intarrayl={2,3,4,5,6,7};B.intarray2[]={2,3,4,5,6,7,C.int]array3=int[30];D.int選項(xiàng)A中,聲明變量array1時(shí)沒(méi)有使用方括號(hào)。選項(xiàng)C中沒(méi)有關(guān)鍵字new。選項(xiàng)D中沒(méi)有3.設(shè)字符串變量sl=newString(""),s2=newString(""),則以下表達(dá)式的值為真的是【】A.pareTolgnoreCase(s2)B.s1.equals(s2)C.pareTo(s2)值。compareTo方法返回的也是int值。另外,==判定兩個(gè)對(duì)象是不是同一個(gè)。題目中所給的s1和s2是分別創(chuàng)建的兩個(gè)對(duì)象,兩者4.以下程序代碼中,能正確創(chuàng)建數(shù)組的是=newint[5];。選項(xiàng)B存在語(yǔ)法錯(cuò)誤。選項(xiàng)D中,左側(cè)方括號(hào)中不能出現(xiàn)5。A.intd[4]={1,2,3,4};C.intc={1,2,3};參見(jiàn)第4題的解釋。I中,聲明了含5個(gè)字符串的數(shù)組,然后通過(guò)循環(huán)語(yǔ)句給各數(shù)組元素賦值空串。Ⅱ中直接給數(shù)組初始化了5個(gè)空串。Ⅲ中有語(yǔ)法錯(cuò)誤,IV中創(chuàng)建的字符串?dāng)?shù)組中保存的是字符串null,二、填空題1.提供的用于處理可變字符串的字符串類是3.使用運(yùn)算符==判定兩個(gè)String類型的對(duì)象是否相等,此時(shí)判定的是。答案:兩個(gè)對(duì)象在內(nèi)存中的存儲(chǔ)空間是否相等?;蛘哒f(shuō),兩個(gè)對(duì)象是不是同一個(gè)對(duì)象。4.數(shù)組靜態(tài)初始化是指答案:在數(shù)組聲明的同時(shí)給數(shù)組元素賦初值。5.數(shù)組動(dòng)態(tài)初始化時(shí),必須使用分配空間。6.數(shù)組下標(biāo)可以是。答案:整型常量或表達(dá)式。答案:026668。replace是將所有的3替換為6。三、簡(jiǎn)答題1.在中是如何完成數(shù)組邊界檢查的?解答:在中,數(shù)組下標(biāo)從0開始,數(shù)組中的元素個(gè)數(shù)記錄在變量length中,這是數(shù)組對(duì)象中唯一的數(shù)據(jù)成員變量。使用new創(chuàng)建數(shù)組時(shí)系統(tǒng)自動(dòng)給length賦值。數(shù)組一旦創(chuàng)建完畢,其大小就固定下來(lái)。程序運(yùn)行時(shí)可以使用length進(jìn)行數(shù)組邊界檢查。如果發(fā)生越界訪問(wèn)2.請(qǐng)簡(jiǎn)述數(shù)組創(chuàng)建的過(guò)程。如何創(chuàng)建一個(gè)對(duì)象數(shù)組?解答:數(shù)組的創(chuàng)建分兩個(gè)步驟,一是定義,二是初始化。定義一個(gè)數(shù)組只是對(duì)數(shù)組的聲明,此時(shí)系統(tǒng)還沒(méi)有為數(shù)組分配任何內(nèi)存空間,因此還不能訪問(wèn)它的任何元素。必須經(jīng)過(guò)數(shù)組初始化后,才能應(yīng)用數(shù)組的元素。定義加初始化這個(gè)過(guò)程就是數(shù)組的創(chuàng)建過(guò)程。從數(shù)組的創(chuàng)建過(guò)程中可以看出,初始化是很關(guān)鍵的一步。數(shù)組的初始化分為靜態(tài)初始化和動(dòng)態(tài)初始化兩種。所謂靜態(tài)初始化就是在定義數(shù)組的同時(shí)對(duì)數(shù)組元素進(jìn)行初始化,靜態(tài)初始化可用于任何元素類型,初值塊中每個(gè)位置的每個(gè)元素對(duì)應(yīng)一個(gè)引用。定義數(shù)組并進(jìn)行靜態(tài)初始化的格式如下:將需要賦給數(shù)組元素的值列在大括號(hào)中,并以逗號(hào)分隔。與之相對(duì)應(yīng)的,動(dòng)態(tài)初始化是使用運(yùn)算符new為數(shù)組分配空間,這和所有對(duì)象是一樣的。數(shù)組說(shuō)明中方括號(hào)內(nèi)的數(shù)字表示數(shù)組元素個(gè)數(shù)。類型[]數(shù)組名=new類型[數(shù)組大小];如果前面已經(jīng)對(duì)數(shù)組進(jìn)行了聲明,則此處的type可以不寫。比如,已經(jīng)聲明了字符類型的這一行創(chuàng)建了有20個(gè)字符的數(shù)組。對(duì)于復(fù)合數(shù)據(jù)類型的數(shù)組,使用運(yùn)算符new只是為數(shù)組本身分配空間,并沒(méi)有對(duì)數(shù)組的元素進(jìn)行初始化。所以對(duì)于復(fù)合數(shù)據(jù)類型的數(shù)組,需要經(jīng)過(guò)兩步進(jìn)行空間分配。類型數(shù)組名[]=new類型[數(shù)組大小];若有Point類定義如下:}}}在聲明Point[]points;后,語(yǔ)句points=newPoint[100];只創(chuàng)建了有100個(gè)Point型變量points[0]=newPointSystem.out.println("p[0].x="+points[0].xSystem.out.println("p[1].x="+points[1].x3.數(shù)組的內(nèi)存分配是如何完成的?4.程序5.2的for語(yǔ)句中使用的兩個(gè)常數(shù)(

溫馨提示

  • 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)論