Java期末考試題及答案_第1頁
Java期末考試題及答案_第2頁
Java期末考試題及答案_第3頁
Java期末考試題及答案_第4頁
Java期末考試題及答案_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Java期末考試題一、簡答題(共8個題,每題5分,共40分)1.java語言有哪些特點?( 1)簡單的a) Java最初是為對家用電器進行集成控制而設計的一種語言,因此它必須簡單明了。b) Java的風格類似于C+,因而C+程序員初次接觸Java語言,就會感到很熟悉。從某種意義上講,Java語言是C及C+語言的一個變種。c) Java摒棄了C+中容易引發(fā)程序錯誤的一些特性,如指針、結(jié)構(gòu)、枚舉以及內(nèi)存管理等。d) Java提供了豐富的類庫,可以幫助我們很方便的開發(fā)Java程序。( 2)面向?qū)ο蟮拿嫦驅(qū)ο罂梢哉f是Java最重要的特性,所以它支持繼承、重載、多態(tài)等面向?qū)ο蟮奶匦浴ava語言的設計是

2、完全面向?qū)ο蟮?,它不支持類似C語言那樣的面向過程的程序設計技術(shù)。( 3)健壯的Java致力于檢查程序在編譯和運行時的錯誤。Java也是一種強類型的語言,其類型檢查比C+還要嚴格。類型檢查幫助我們檢查出許多開發(fā)早期出現(xiàn)的錯誤。Java自己負責內(nèi)存管理,提供了垃圾內(nèi)存回收機制,有效的避免了C+中最頭疼的內(nèi)存泄漏問題。( 4)安全的Java的安全性可從兩個方面得到保證。一方面,在Java語言里,刪除了指針和釋放內(nèi)存等C+功能,避免了非法內(nèi)存操作。另一方面,通過Java的安全體系架構(gòu)來確保Java代碼的安全性。從一開始,Java就被設計成能夠防范各種襲擊,包括:禁止運行時堆棧溢出。例如,蠕蟲等病毒常用

3、的襲擊手段;禁止在自己的處理空間之外破壞內(nèi)存;未經(jīng)授權(quán)禁止讀寫文件;許多安全特性相繼不斷的被加入Java中。( 5)解釋的Java代碼是解釋執(zhí)行的,我們使用Java編譯器將Java代碼編譯成字節(jié)碼,這是一種中間代碼,然后由Java解釋器解釋執(zhí)行。而C+程序是編譯執(zhí)行的,C+程序代碼被編譯為本地機器指令,然后執(zhí)行。( 6)與平臺無關(guān)的Java作為一種網(wǎng)絡語言,其源代碼被編譯成一種結(jié)構(gòu)中立的中間文件格式。只要有Java運行系統(tǒng)的機器都能執(zhí)行這種中間代碼。Java源程序被編譯成一種與機器無關(guān)的字節(jié)碼格式,在Java虛擬機上運行。( 7)多線程的Java語言的一個重要特性就是在語言級支持多線程的程序設

4、計。多線程就好像我們做一張桌子,如果你一個人完成這張桌子就好像單線程,那么你需要先做桌面,做完桌面后,再做4 個桌子腿,如果現(xiàn)在有5個人來做桌子在程序中開辟5個線程,其中1個人做桌面,另外5 個人分別做4個桌子腿,那么這兩種方式效率的高低,相信大家都能區(qū)分出來。(8)動態(tài)的Java的動態(tài)特性是其面向?qū)ο笤O計方法的擴展。它允許程序動態(tài)地裝入運行過程中所需要的類。在C+程序設計過程中,每當在類中增加一個實例變量或一個成員函數(shù)后,引用該類的所有子類都必須重新編譯,否則將導致程序崩潰。Java從以下幾個方面采取措施來解決這個問題。a) Java編譯器不是將對實例變量和成員函數(shù)的引用編譯為數(shù)值引用,而是

5、將符號引用信息在字節(jié)碼中保存下來,傳遞給解釋器,再由解釋器在完成動態(tài)連接類后,將符號引用信息轉(zhuǎn)換為數(shù)值偏移量。b) 一個在存儲器中生成的對象不在編譯過程中決定,而是延遲到運行時由解釋器確定。這樣,對類中的變量和方法進行更新時就不至于影響現(xiàn)存的代碼。c)解釋執(zhí)行字節(jié)碼時,這種符號信息的查找和轉(zhuǎn)換過程僅在一個新的名字出現(xiàn)時才進行一次,隨后代碼便可以全速執(zhí)行。在運行時確定引用的好處是可以使用已被更新的類,而不必擔心會影響原有的代碼。如果程序連接了網(wǎng)絡中另一系統(tǒng)中的某一類,該類的所有者也可以自由地對該類進行更新,而不會使任何引用該類的程序崩潰。d)Java還簡化了使用一個升級的或全新協(xié)議的方法。如果你

6、的系統(tǒng)運行Java程序時遇到了不知怎樣處理的程序,Java能自動下載你所需要的功能程序。c) 什么是java虛擬機?Java虛擬機JVM(JavaVirtualMachine)在JAVA編程里面具有非常重要的地位。約相當于JAVA運行環(huán)境JRE。JAVA虛擬機是在真實機器中用軟件模擬實現(xiàn)的一種想象機器,它為不同的硬件平臺提供了一種編譯JAVA技術(shù)代碼的規(guī)范,該規(guī)范使JAVA軟件獨立于平臺。JVM對下列各項做出了定義:指令集,寄存器,類文件格式,棧,垃圾收集堆,存儲區(qū)。Java虛擬機的功能:(1)通過ClassLoader尋找和裝載Class文件(2)解釋字節(jié)碼成為指令并執(zhí)行,提供Class文件

7、的運行環(huán)境(3)進行運行期間垃圾回收(4)提供與硬件交互的平臺JAVA虛擬機是JAVA平臺無關(guān)的保障。正是因為有虛擬機這中間層,JAVA才能夠?qū)崿F(xiàn)與平臺無關(guān)。虛擬機就好比是一個JAVA運行的基本平臺,所有的JAVA程序都運行在虛擬機上。所有與平臺有關(guān)的東西都是由虛擬機去處理。3. 什么是方法重載(Overloading)與方法覆蓋(Overriding)?(1) 方法重載(Overloading):方法重載是指同名的方法在不同的地方具有多種含義。方法重載使得在類中可以存在方法名相同的多個方法,但方法的原型不能完全相同,由方法的參數(shù)不同來決定所使用的是哪個方法。方法的原型包括方法名和方法參數(shù)類型

8、。(2) 方法覆蓋(overriding)方法覆蓋也叫方法重寫,是指方法的含義被重新編寫后的方法所替代。對于方法覆蓋,子類可以重新實現(xiàn)父類的某些方法,并具有自己的特征。這樣,覆蓋隱藏了父類的方法,使子類可以具有自己的實現(xiàn)方法。子類覆蓋父類的方法時,子類中方法的訪問權(quán)限不能低于父類中該方法的訪問權(quán)限4. java中equals和“=”的區(qū)別?使用“=”比較基本類型字段,使用equals方法比較對象字段。=操作比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量在堆中存儲的地址是否相同,即棧中的內(nèi)容是否相同;equals操作表示的兩個變量是否是對同一個對象的引用,即堆中的內(nèi)容是否相同。二=

9、比較的是2個對象的地址,而equals比較的是2個對象的內(nèi)容。顯然,當equals為true時,=不一定為true。5. 什么是抽象類?什么是接口?一般稱含有抽象方法的類稱為抽象類。抽象類是不能被實例化的類,用abstract修飾。接口是一種與類相似的結(jié)構(gòu),但接口不是類,而是一組對類的要求,這些類要與接口一致一個類可以實現(xiàn)一個或多個接口,并在需要接口的地方,隨時使用實現(xiàn)了相應接口的對象。6. 什么是多態(tài)?一個對象變量可以指向多種實際類型對象的現(xiàn)象被稱為“多態(tài)”(polymorphism)。7. 異常的分類?它們的區(qū)別是什么?Error:稱為錯誤,由Java虛擬機生成并拋出,包括動態(tài)連接失敗、虛

10、擬機錯誤等,程序?qū)ζ洳蛔魈幚?。Exception:所以異常類的父類,其子類對應了各種各樣可能出現(xiàn)的異常事件,一般需要用戶顯式的聲明或捕獲。RuntimeException:一類特殊的異常,如被0除、數(shù)組下標超范圍等,其產(chǎn)生比較頻繁,處理麻煩,如果顯式的聲明或捕獲將會對程序的可讀性和運行效率影響很大。因此由系統(tǒng)自動檢測并將它們交給缺省的異常處理程序(用戶可不必對其處理)。8. 什么是流?流(stream)是輸入和輸出設備的一種抽象表示,這些設備是數(shù)據(jù)源或數(shù)據(jù)終點。可以象流中寫入數(shù)據(jù),也可以從流中讀出數(shù)據(jù)??梢园蚜飨胂鬄榱魅胱约撼绦蚧驈淖约撼绦蛑辛鞒龅淖止?jié)序列。當把數(shù)據(jù)寫入流時,該流稱為輸出流。輸

11、出流可以通往任何可以傳輸字節(jié)序列的設備,例如硬盤上的文件,或連接用戶系統(tǒng)至遠程系統(tǒng)的電話線路。輸出流也可以通向顯示器,但這會大大限制其真正的功能。二、程序設計題(共4個題,每題15分,共60分)1、輸出1到100以內(nèi)的前10個質(zhì)數(shù)。publicclassZhishupublicstaticvoidmain(Stringargs)System.out.println("1到100以內(nèi)的前10個質(zhì)數(shù):");ints,i,j=0;for(s=2;s<=100;s+)for(i=2;i<=s/2;i+)if(s%i=0)break;if(i>s/2)j+;if(j

12、<=10)System.out.println("第"+j+"個:"+s);2、計算并輸出result=1!+2!+3!+10!的結(jié)果。publicclassSumpublicstaticvoidmain(Stringargs)System.out.println("result=1!+2!+3!+10!");ints=0,t=1;intn;for(n=1;n<=20;n+)t=t*n;s=s+t;System.out.println("result="+s);3、定義一個長方形類,該類具有長和寬兩種屬

13、性,并具有相應的構(gòu)造方法、屬性訪問方法和計算周長和面積的方法,要求輸出長是5寬是4的長方形的面積和周長。長寬無參數(shù)的構(gòu)造方法publicclassRectangleprivatedoublelength;/privatedoublewidth;/publicRectangle()/publicRectangle(doublelength,doublewidth)this.length=length;this.width=width;/帶參數(shù)的構(gòu)造方法publicvoidsetLength(doublelLength)length=lLength;publicvoidsetWidth(doubl

14、ewWidth)width=wWidth;publicdoublegetLength()returnlength;publicdoublegetWidth()returnwidth;publicdoublearea(doublei,doublej)/計算面積return(length*width);publicdoublepermcter(doublei,doublej)/計算周長return(length+width)*2);publicstaticvoidmain(String口args)System.out.println("長為5,寬為4的長方形的周長與面積:");

15、RectangleRectangle=newRectangle(5,4);System.out.println("周長(5,4)="+Rectangle.permcter(5,4);System.out.println("面積(5,4)="+Rectangle.area(5,4);4、定義一個父類Parents和兩個子類Father類和Mother類:Parents類具有兩個屬性:姓名和年齡,該類所包含的方法除了構(gòu)造方法和相應的get和set方法,還有一個print()用來打印對象的具體的信息,例如,輸出“我是家長,我的名字是.,我的年齡是歲”;Fath

16、er類增加了一個屬性:愛好,并重寫了父類Parents中的print()方法,輸出“我是父親,我的名字是.,我的年齡是歲,我的愛好是.”;Mother類增加了一個屬性:頭發(fā)的顏色,并重寫了父類Parents中的print()方法,輸出“我是母親,我的名字是.,我的年齡是.歲,我頭發(fā)的顏色是."。最后定義一個測試類Test,要求顯示如下信息:36歲45歲,我的愛好是打保齡球36歲,我的頭發(fā)顏色是棕色5、我是家長,我的名字是王瑞,我的年齡是6、我是父親,我的名字是張峰,我的年齡是7、我是母親,我的名字是孫娟,我的年齡是Parents:publicabstractclassParentsp

17、rivateStringname;/姓名privateintage;/年齡publicParents()publicParents(Stringname,intage)this.setName(name);this.setAge(age);publicvoidsetName(Stringname)=name;publicStringgetName()returnname;publicvoidsetAge(intage)this.age=age;publicintgetAge()returnage;voidSys()System.out.println("我是家長,&

18、quot;+"我的名字是"+this.getName()+",我的年齡是"+this.getAge()+"歲)Father:publicclassFatherextendsParentsprivateStringfavor;publicFather(Stringname,intage,Stringfavor)super(name,age);this.favor=favor;publicvoidsetFavor(Stringfavor)this.favor=favor;publicStringgetFavor()returnfavor;voidSys()System.out.println("我是父親,"+"我的名字是"+this.getName()+",我的年齡是"+this.getAge()+"歲,我的愛好是"+this.getFavor();Mother:pub

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論