精選精選30道Java試題_第1頁
精選精選30道Java試題_第2頁
精選精選30道Java試題_第3頁
精選精選30道Java試題_第4頁
精選精選30道Java試題_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

精選精選30道Java試題精選30道Java試題1.下面哪些是Thread類的方法〔〕Astart()Brun()Cexit()DgetPriority()答案:ABD解析:看JavaAPIdocs吧:/javase/7/docs/api/,exit()是System類的方法,如System.exit(0)。2.下面關(guān)于java.lang.Exception類的說法正確的選項(xiàng)是〔〕A繼承自ThrowableBSerialableCD不記得,反正不正確答案:A解析:Java異常的基類為java.lang.Throwable,java.lang.Error和java.lang.Exception繼承Throwable,RuntimeException和其它的Exception等繼承Exception,具體的RuntimeException繼承RuntimeException。擴(kuò)展:錯(cuò)誤和異常的區(qū)別(ErrorvsException)1)java.lang.Error:Throwable的子類,用于標(biāo)記嚴(yán)重錯(cuò)誤。合理的應(yīng)用程序不應(yīng)該去try/catch這種錯(cuò)誤。絕大多數(shù)的錯(cuò)誤都是非正常的,就根本不該出現(xiàn)的。

java.lang.Exception:Throwable的子類,用于指示一種合理的程序想去catch的條件。即它僅僅是一種程序運(yùn)行條件,而非嚴(yán)重錯(cuò)誤,并且鼓勵用戶程序去catch它。2)Error和RuntimeException及其子類都是未檢查的異常〔uncheckedexceptions〕,而所有其他的Exception類都是檢查了的異常〔checkedexceptions〕.

checkedexceptions:通常是從一個(gè)可以恢復(fù)的程序中拋出來的,并且最好能夠從這種異常中使用程序恢復(fù)。比方FileNotFoundException,ParseException等。檢查了的異常發(fā)生在編譯階段,必須要使用try…catch〔或者throws〕否那么編譯不通過。

uncheckedexceptions:通常是如果一切正常的話本不該發(fā)生的異常,但是確實(shí)發(fā)生了。發(fā)生在運(yùn)行期,具有不確定性,主要是由于程序的邏輯問題所引起的。比方ArrayIndexOutOfBoundException,ClassCastException等。從語言本身的角度講,程序不該去catch這類異常,雖然能夠從諸如RuntimeException這樣的異常中catch并恢復(fù),但是并不鼓勵終端程序員這么做,因?yàn)橥耆珱]要必要。因?yàn)檫@類錯(cuò)誤本身就是bug,應(yīng)該被修復(fù),出現(xiàn)此類錯(cuò)誤時(shí)程序就應(yīng)該立即停止執(zhí)行。因此,面對Errors和uncheckedexceptions應(yīng)該讓程序自動終止執(zhí)行,程序員不該做諸如try/catch這樣的事情,而是應(yīng)該查明原因,修改代碼邏輯。RuntimeException:RuntimeException體系包括錯(cuò)誤的類型轉(zhuǎn)換、數(shù)組越界訪問和試圖訪問空指針等等。處理RuntimeException的原那么是:如果出現(xiàn)RuntimeException,那么一定是程序員的錯(cuò)誤。例如,可以通過檢查數(shù)組下標(biāo)和數(shù)組邊界來防止數(shù)組越界訪問異常。其他〔IOException等等〕checked異常一般是外部錯(cuò)誤,例如試圖從文件尾后讀取數(shù)據(jù)等,這并不是程序本身的錯(cuò)誤,而是在應(yīng)用環(huán)境中出現(xiàn)的外部錯(cuò)誤。3.下面程序的運(yùn)行結(jié)果是〔〕Stringstr1="hello";

Stringstr2="he"+newString("llo");

System.err.println(str1==str2);答案:false解析:因?yàn)閟tr2中的llo是新申請的內(nèi)存塊,而==判斷的是對象的地址而非值,所以不一樣。如果是Stringstr2=str1,那么就是true了。4.以下說法正確的有〔〕A.class中的constructor不可省略B.constructor必須與class同名,但方法不能與class同名C.constructor在一個(gè)對象被new時(shí)執(zhí)行D.一個(gè)class只能定義一個(gè)constructor答案:C解析:這里可能會有誤區(qū),其實(shí)普通的類方法是可以和類名同名的,和構(gòu)造方法唯一的區(qū)分就是,構(gòu)造方法沒有返回值。5.具體選項(xiàng)不記得,但用到的知識如下:String[]a=newString[10];那么:a[0]~a[9]=nulla.length=10如果是int[]a=newint[10];那么:a[0]~a[9]=0a.length=106.下面程序的運(yùn)行結(jié)果:〔〕publicstaticvoidmain(Stringargs[]){

Threadt=newThread(){

publicvoidrun(){

pong();

}

};

t.run();

System.out.print("ping");

}

staticvoidpong(){

System.out.print("pong");

}ApingpongBpongpingCpingpong和pongping都有可能D都不輸出答案:B解析:這里考的是Thread類中start()和run()方法的區(qū)別了。start()用來啟動一個(gè)線程,當(dāng)調(diào)用start方法后,系統(tǒng)才會開啟一個(gè)新的線程,進(jìn)而調(diào)用run()方法來執(zhí)行任務(wù),而單獨(dú)的調(diào)用run()就跟調(diào)用普通方法是一樣的,已經(jīng)失去線程的特性了。因此在啟動一個(gè)線程的時(shí)候一定要使用start()而不是run()。7.以下屬于關(guān)系型數(shù)據(jù)庫的是〔〕A.OracleBMySqlCIMSDMongoDB答案:AB解答:IMS〔InformationManagementSystem〕數(shù)據(jù)庫是IBM公司開發(fā)的兩種數(shù)據(jù)庫類型之一;一種是關(guān)系數(shù)據(jù)庫,典型代表產(chǎn)品:DB2;另一種那么是層次數(shù)據(jù)庫,代表產(chǎn)品:IMS層次數(shù)據(jù)庫。非關(guān)系型數(shù)據(jù)庫有MongoDB、memcachedb、Redis等。8.GC線程是否為守護(hù)線程?〔〕答案:是解析:線程分為守護(hù)線程和非守護(hù)線程〔即用戶線程〕。只要當(dāng)前JVM實(shí)例中尚存在任何一個(gè)非守護(hù)線程沒有結(jié)束,守護(hù)線程就全部工作;只有當(dāng)最后一個(gè)非守護(hù)線程結(jié)束時(shí),守護(hù)線程隨著JVM一同結(jié)束工作。守護(hù)線程最典型的應(yīng)用就是GC(垃圾回收器)9.volatile關(guān)鍵字是否能保證線程平安?〔〕答案:不能解析:volatile關(guān)鍵字用在多線程同時(shí)中,可保證讀取的可見性,JVM只是保證從主內(nèi)存加載到線程工作內(nèi)存的值是最新的讀取值,而非cache中。但多個(gè)線程對volatile的寫操作,無法保證線程平安。例如假設(shè)線程1,線程2在進(jìn)行read,load操作中,發(fā)現(xiàn)主內(nèi)存中count的值都是5,那么都會加載這個(gè)最新的值,在線程1堆count進(jìn)行修改之后,會write到主內(nèi)存中,主內(nèi)存中的count變量就會變?yōu)?;線程2由于已經(jīng)進(jìn)行read,load操作,在進(jìn)行運(yùn)算之后,也會更新主內(nèi)存count的變量值為6;導(dǎo)致兩個(gè)線程及時(shí)用volatile關(guān)鍵字修改之后,還是會存在并發(fā)的情況。10.以下說法正確的選項(xiàng)是〔〕ALinkedList繼承自ListBAbstractSet繼承自SetCHashSet繼承自AbstractSetDWeakMap繼承自HashMap答案:AC解析:下面是一張下載的Java中的集合類型的繼承關(guān)系圖,一目了然。11.存在使i+1<i的數(shù)嗎〔〕答案:存在解析:如果i為int型,那么當(dāng)i為int能表示的最大整數(shù)時(shí),i+1就溢出變成負(fù)數(shù)了,此時(shí)不就<i了嗎。擴(kuò)展:存在使i>j||i<=j不成立的數(shù)嗎〔〕答案:存在解析:比方Double.NaN或Float.NaN,感謝@BuilderQiu網(wǎng)友指出。12.0.6332的數(shù)據(jù)類型是〔〕AfloatBdoubleCFloatDDouble答案:B解析:默認(rèn)為double型,如果為float型需要加上f顯示說明,即0.6332f13.下面哪個(gè)流類屬于面向字符的輸入流()ABufferedWriterBFileInputStreamCObjectInputStreamDInputStreamReader答案:D解析:Java的IO操作中有面向字節(jié)(Byte)和面向字符(Character)兩種方式。

面向字節(jié)的操作為以8位為單位對二進(jìn)制的數(shù)據(jù)進(jìn)行操作,對數(shù)據(jù)不進(jìn)行轉(zhuǎn)換,這些類都是InputStream和OutputStream的子類。

面向字符的操作為以字符為單位對數(shù)據(jù)進(jìn)行操作,在讀的時(shí)候?qū)⒍M(jìn)制數(shù)據(jù)轉(zhuǎn)為字符,在寫的時(shí)候?qū)⒆址D(zhuǎn)為二進(jìn)制數(shù)據(jù),這些類都是Reader和Writer的子類。總結(jié):以InputStream〔輸入〕/OutputStream〔輸出〕為后綴的是字節(jié)流;以Reader〔輸入〕/Writer〔輸出〕為后綴的是字符流。擴(kuò)展:Java流類圖結(jié)構(gòu),一目了然,解決大局部選擇題:14.Java接口的修飾符可以為〔〕AprivateBprotectedCfinalDabstract答案:CD解析:接口很重要,為了說明情況,這里稍微啰嗦點(diǎn):〔1〕接口用于描述系統(tǒng)對外提供的所有效勞,因此接口中的成員常量和方法都必須是公開(public)類型的,確保外部使用者能訪問它們;〔2〕接口僅僅描述系統(tǒng)能做什么,但不指明如何去做,所以接口中的方法都是抽象(abstract)方法;〔3〕接口不涉及和任何具體實(shí)例相關(guān)的細(xì)節(jié),因此接口沒有構(gòu)造方法,不能被實(shí)例化,沒有實(shí)例變量,只有靜態(tài)〔static〕變量;〔4〕接口的中的變量是所有實(shí)現(xiàn)類共有的,既然共有,肯定是不變的東西,因?yàn)樽兓臇|西也不能夠算共有。所以變量是不可變(final)類型,也就是常量了?!?〕接口中不可以定義變量?如果接口可以定義變量,但是接口中的方法又都是抽象的,在接口中無法通過行為來修改屬性。有的人會說了,沒有關(guān)系,可以通過實(shí)現(xiàn)接口的對象的行為來修改接口中的屬性。這當(dāng)然沒有問題,但是考慮這樣的情況。如果接口A中有一個(gè)public訪問權(quán)限的靜態(tài)變量a。按照J(rèn)ava的語義,我們可以不通過實(shí)現(xiàn)接口的對象來訪問變量a,通過A.a=xxx;就可以改變接口中的變量a的值了。正如抽象類中是可以這樣做的,那么實(shí)現(xiàn)接口A的所有對象也都會自動擁有這一改變后的a的值了,也就是說一個(gè)地方改變了a,所有這些對象中a的值也都跟著變了。這和抽象類有什么區(qū)別呢,怎么表達(dá)接口更高的抽象級別呢,怎么表達(dá)接口提供的統(tǒng)一的協(xié)議呢,那還要接口這種抽象來做什么呢?所以接口中不能出現(xiàn)變量,如果有變量,就和接口提供的統(tǒng)一的抽象這種思想是抵觸的。所以接口中的屬性必然是常量,只能讀不能改,這樣才能為實(shí)現(xiàn)接口的對象提供一個(gè)統(tǒng)一的屬性。通俗的講,你認(rèn)為是要變化的東西,就放在你自己的實(shí)現(xiàn)中,不能放在接口中去,接口只是對一類事物的屬性和行為更高層次的抽象。對修改關(guān)閉,對擴(kuò)展〔不同的實(shí)現(xiàn)implements〕開放,接口是對開閉原那么的一種表達(dá)。所以:接口的方法默認(rèn)是publicabstract;接口中不可以定義變量即只能定義常量(加上final修飾就會變成常量)。所以接口的屬性默認(rèn)是publicstaticfinal常量,且必須賦初值。注意:final和abstract不能同時(shí)出現(xiàn)。15.不通過構(gòu)造函數(shù)也能創(chuàng)立對象嗎〔〕A是B否答案:A解析:Java創(chuàng)立對象的幾種方式〔重要〕:(1)用new語句創(chuàng)立對象,這是最常見的創(chuàng)立對象的方法。

(2)運(yùn)用反射手段,調(diào)用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實(shí)例方法。

(3)調(diào)用對象的clone()方法。

(4)運(yùn)用反序列化手段,調(diào)用java.io.ObjectInputStream對象的readObject()方法。(1)和(2)都會明確的顯式的調(diào)用構(gòu)造函數(shù);(3)是在內(nèi)存上對已有對象的影印,所以不會調(diào)用構(gòu)造函數(shù);(4)是從文件中復(fù)原類的對象,也不會調(diào)用構(gòu)造函數(shù)。16.ArrayListlist=newArrayList(20);中的list擴(kuò)充幾次〔〕A0B1C2D3答案:A解析:這里有點(diǎn)迷惑人,大家都知道默認(rèn)ArrayList的長度是10個(gè),所以如果你要往list里添加20個(gè)元素肯定要擴(kuò)充一次〔擴(kuò)充為原來的1.5倍〕,但是這里顯示指明了需要多少空間,所以就一次性為你分配這么多空間,也就是不需要擴(kuò)充了。17.下面哪些是對稱加密算法〔〕ADESBAESCDSADRSA答案:AB解析:常用的對稱加密算法有:DES、3DES、RC2、RC4、AES常用的非對稱加密算法有:RSA、DSA、ECC使用單向散列函數(shù)的加密算法:MD5、SHA18.新建一個(gè)流對象,下面哪個(gè)選項(xiàng)的代碼是錯(cuò)誤的?〔〕A〕newBufferedWriter(newFileWriter("a.txt"));B〕newBufferedReader(newFileInputStream("a.dat"));C〕newGZIPOutputStream(newFileOutputStream("a.zip"));D〕newObjectInputStream(newFileInputStream("a.dat"));答案:B解析:請記得13題的那個(gè)圖嗎?Reader只能用FileReader進(jìn)行實(shí)例化。19.下面程序能正常運(yùn)行嗎〔〕publicclassNULL{

publicstaticvoidhaha(){

System.out.println("haha");

}

publicstaticvoidmain(String[]args){

((NULL)null).haha();

}

}答案:能正常運(yùn)行解析:輸出為haha,因?yàn)閚ull值可以強(qiáng)制轉(zhuǎn)換為任何java類類型,(String)null也是合法的。但null強(qiáng)制轉(zhuǎn)換后是無效對象,其返回值還是為null,而static方法的調(diào)用是和類名綁定的,不借助對象進(jìn)行訪問所以能正確輸出。反過來,沒有static修飾就只能用對象進(jìn)行訪問,使用null調(diào)用對象肯定會報(bào)空指針錯(cuò)了。這里和C++很類似。這里感謝@Florian網(wǎng)友解答。20.下面程序的運(yùn)行結(jié)果是什么〔〕classHelloA{

publicHelloA(){

System.out.println("HelloA");

}

{System.out.println("I'mAclass");}

static{System.out.println("staticA");}

}

publicclassHelloBextendsHelloA{

publicHelloB(){

System.out.println("HelloB");

}

{System.out.println("I'mBclass");}

static{System.out.println("staticB");}

publicstaticvoidmain(String[]args){

newHelloB();

}

}答案:staticAstaticB

I'mAclassHelloA

I'mBclass

HelloB解析:說實(shí)話我覺得這題很好,考查靜態(tài)語句塊、構(gòu)造語句塊〔就是只有大括號的那塊〕以及構(gòu)造函數(shù)的執(zhí)行順序。對象的初始化順序:〔1〕類加載之后,按從上到下〔從父類到子類〕執(zhí)行被static修飾的語句;〔2〕當(dāng)static語句執(zhí)行完之后,再執(zhí)行main方法;〔3〕如果有語句new了自身的對象,將從上到下執(zhí)行構(gòu)造代碼塊、構(gòu)造器〔兩者可以說綁定在一起〕。下面稍微修改下上面的代碼,以便更清晰的說明情況:ViewCode此時(shí)輸出結(jié)果為:staticAstaticB-------mainstart-------

I'mAclassHelloA

I'mBclassHelloB

I'mAclassHelloA

I'mBclassHelloB-------mainend-------21.getCustomerInfo()方法如下,try中可以捕獲三種類型的異常,如果在該方法運(yùn)行中產(chǎn)生了一個(gè)IOException,將會輸出什么結(jié)果〔〕publicvoidgetCustomerInfo(){

try{

//dosomethingthatmaycauseanException

}catch(java.io.FileNotFoundExceptionex){

System.out.print("FileNotFoundException!");

}catch(java.io.IOExceptionex){

System.out.print("IOException!");

}catch(java.lang.Exceptionex){

System.out.print("Exception!");

}

}AIOException!BIOException!Exception!CFileNotFoundException!IOException!DFileNotFoundException!IOException!Exception!答案:A解析:考察多個(gè)catch語句塊的執(zhí)行順序。當(dāng)用多個(gè)catch語句時(shí),catch語句塊在次序上有先后之分。從最前面的catch語句塊依次先后進(jìn)行異常類型匹配,這樣如果父異常在子異常類之前,那么首先匹配的將是父異常類,子異常類將不會獲得匹配的時(shí)機(jī),也即子異常類型所在的catch語句塊將是不可到達(dá)的語句。所以,一般將父類異常類即Exception老大放在catch語句塊的最后一個(gè)。22.下面代碼的運(yùn)行結(jié)果為:〔〕importjava.io.*;importjava.util.*;

publicclassfoo{

publicstaticvoidmain(String[]args){

Strings;

System.out.println("s="+s);

}

}A代碼得到編譯,并輸出“s=〞B代碼得到編譯,并輸出“s=null〞C由于Strings沒有初始化,代碼不能編譯通過D代碼得到編譯,但捕獲到NullPointException異常答案:C解析:開始以為會輸出null什么的,運(yùn)行后才發(fā)現(xiàn)Java中所有定義的根本類型或?qū)ο蠖急仨毘跏蓟拍茌敵鲋怠?3.System.out.println("5"+2);的輸出結(jié)果應(yīng)該是〔〕。A52B7C2D5答案:A解析:沒啥好說的,Java會自動將2轉(zhuǎn)換為字符串。24.指出以下程序運(yùn)行的結(jié)果〔〕publicclassExample{

Stringstr=newString("good");

char[]ch={'a','b','c'};

publicstaticvoidmain(Stringargs[]){

Exampleex=newExample();

ex.change(ex.str,ex.ch);

System.out.print(ex.str+"and");

System.out.print(ex.ch);

}

publicvoidchange(Stringstr,charch[]){

str="testok";

ch[0]='g';

}

}A、goodandabcB、goodandgbcC、testokandabcD、testokandgbc答案:B解析:大家可能以為Java中String和數(shù)組都是對象所以肯定是對象引用,然后就會選D,其實(shí)這是個(gè)很大的誤區(qū):因?yàn)樵趈ava里沒有引用傳遞,只有值傳遞這個(gè)值指的是實(shí)參的地址的拷貝,得到這個(gè)拷貝地址后,你可以通過它修改這個(gè)地址的內(nèi)容〔引用不變〕,因?yàn)榇藭r(shí)這個(gè)內(nèi)容的地址和原地址是同一地址,但是你不能改變這個(gè)地址本身使其重新引用其它的對象,也就是值傳遞,可能說的不是很清楚,下面給出一個(gè)完整的能說明情況的例子吧:ViewCode程序有些啰嗦,但能反映問題,該程序運(yùn)行結(jié)果為:對象交換前:p1=Alexiafemale

對象交換前:p2=Edwardmale

對象交換后:p1=Alexiafemale

對象交換后:p2=Edwardmale

對象數(shù)組交換前:arraya[0]=Alexiafemale,arraya[1]=Edwardmale

對象數(shù)組交換前:arrayb[0]=jmwangfemale,arrayb[1]=hwumale

對象數(shù)組交換后:arraya[0]=Alexiafemale,arraya[1]=Edwardmale

對象數(shù)組交換后:arrayb[0]=jmwangfemale,arrayb[1]=hwumale

根本類型數(shù)組交換前:a[0]=0,a[1]=1

根本類型數(shù)組交換前:b[0]=1,b[1]=2

根本類型數(shù)組交換后:a[0]=0,a[1]=1

根本類型數(shù)組交換后:b[0]=1,b[1]=2

對象數(shù)組內(nèi)容交換并改變后:arraya[1]=wjlmale

對象數(shù)組內(nèi)容交換并改變后:arrayb[1]=Edwardmale

根本類型數(shù)組內(nèi)容交換并改變后:a[1]=5

根本類型數(shù)組內(nèi)容交換并改變后:b[1]=1說明:不管是對象、根本類型還是對象數(shù)組、根本類型數(shù)組,在函數(shù)中都不能改變其實(shí)際地址但能改變其中的內(nèi)容。25.要從文件"file.dat"中讀出第10個(gè)字節(jié)到變量c中,以下哪個(gè)方法適合?〔〕AFileInputStreamin=newFileInputStream("file.dat");in.skip(9);intc=in.read();BFileInputStreamin=newFileInputStream("file.dat");in.skip(10);intc=in.read();CFileInputStreamin=newFileInputStream("file.dat");intc=in.read();DRandomAccessFilein=newRandomAccessFile("file.dat");in.skip(9);intc=in.readByte();答案:A?D?解析:longskip(longn)作用是跳過n個(gè)字節(jié)不讀,主要用在包裝流中的,因?yàn)橐话懔鳌踩鏔ileInputStream〕只能順序一個(gè)一個(gè)的讀不能跳躍讀,但是包裝流可以用skip方法跳躍讀取。那么什么是包裝流呢?各種字節(jié)節(jié)點(diǎn)流類,它們都只具有讀寫字節(jié)內(nèi)容的方法,以FileInputStream與FileOutputStream為例,它們只能在文件中讀取或者向文件中寫入字節(jié),在實(shí)際應(yīng)用中我們往往需要在文件中讀取或者寫入各種類型的數(shù)據(jù),就必須先將其他類型的數(shù)據(jù)轉(zhuǎn)換成字節(jié)數(shù)組后寫入文件,或者從文件中讀取到的字節(jié)數(shù)組轉(zhuǎn)換成其他數(shù)據(jù)類型,想想都很麻煩??!因此想通過FileOutputStream將一個(gè)浮點(diǎn)小數(shù)寫入到文件中或?qū)⒁粋€(gè)整數(shù)寫入到文件時(shí)是非常困難的。這時(shí)就需要包裝類DataInputStream/DataOutputStream,它提供了往各種輸入輸出流對象中讀入或?qū)懭敫鞣N類型的數(shù)據(jù)的方法。DataInputStream/DataOutputStream并沒有對應(yīng)到任何具體的流設(shè)備,一定要給它傳遞一個(gè)對應(yīng)具體流設(shè)備的輸入或輸出流對象,完成類似DataInputStream/DataOutputStream功能的類就是一個(gè)包裝類,也叫過濾流類或處理流類。它對InputOutStream/OutputStream流類進(jìn)行了包裝,使編程人員使用起來更方便。其中DataInputStream包裝類的構(gòu)造函數(shù)語法:publicDataInputStream(InputStreamin)。包裝類也可以包裝另外一個(gè)包裝類。首先BC肯定是錯(cuò)的,那A正確嗎?按上面的解析應(yīng)該也不對,但我試了下,發(fā)現(xiàn)A也是正確的,與網(wǎng)上解析的資料有些出入,下面是我的code:ViewCode那么D呢,RandomAccessFile是IO包的類,但是其自成一派,從Object直接繼承而來??梢詫ξ募M(jìn)行讀取和寫入。支持文件的隨機(jī)訪問,即可以隨機(jī)讀取文件中的某個(gè)位置內(nèi)容,這么說RandomAccessFile肯定可以到達(dá)題目的要求,但是選項(xiàng)有些錯(cuò)誤,比方RandomAccessFile的初始化是兩個(gè)參數(shù)而非一個(gè)參數(shù),采用的跳躍讀取方法是skipBytes()而非skip(),即正確的寫法是:RandomAccessFilein=newRandomAccessFile("file.dat","r");

in.skipBytes(9);intc=in.readByte();這樣也能讀到第十個(gè)字節(jié),也就是A和D都能讀到第十個(gè)字節(jié),那么到底該選哪個(gè)呢?A和D有啥不同嗎?求大神解答~~~26.以下哪種異常是檢查型異常,需要在編寫程序時(shí)聲明〔〕ANullPointerExceptionBClassCastExceptionCFileNotFoundExceptionDIndexOutOfBoundsException答案:C解析:看第2題的解析。27.下面的方法,當(dāng)輸入為2的時(shí)候返回值是多少?〔〕publicstaticintgetValue(inti){

intresult=0;

switch(i){

case1:

result=result+i;

case2:

result=result+i*2;

case3:

result=result+i*3;

}

returnresult;

}A0B2C4D10答案:D解析:注意這里case后面沒有加break,所以從case2開始一直往下運(yùn)行。28.選項(xiàng)中哪一行代碼可以替換題目中//addcodehere而不產(chǎn)生編譯錯(cuò)誤?〔〕publicabstractclassMyClass{

publicintconstInt=5;

//addcodehere

publicvoidmethod(){

}

}Apublicabstractvoidmethod(inta);BconstInt=constInt+5;Cpublicintmethod();DpublicabstractvoidanotherMethod(){}答案:A解析:考察抽象類的使用。抽象類遵循的原那么:〔1〕abstract關(guān)鍵字只能修飾類和方法,不能修飾字段。〔2〕抽象類不能被實(shí)例化〔無法使用new關(guān)鍵字創(chuàng)立對象實(shí)例〕,只能被繼承?!?〕抽象類可以包含屬性,方法,構(gòu)造方法,初始化塊,內(nèi)部類,枚舉類,和普通類一樣,普通方法一定要實(shí)現(xiàn),變量可以初始化或不初始化但不能初始化后在抽象類中重新賦值或操作該變量〔只能在子類中改變該變量〕?!?〕抽象類中的抽象方法〔加了abstract關(guān)鍵字的方法〕不能實(shí)現(xiàn)?!?〕含有抽象方法的類必須定義成抽象類。擴(kuò)展:抽象類和接口的區(qū)別,做個(gè)總結(jié)吧:〔1〕接口是公開的,里面不能有私有的方法或變量,是用于讓別人使用的,而抽象類是可以有私有方法或私有變量的?!?〕abstractclass在Java語言中表示的是一種繼承關(guān)系,一個(gè)類只能使用一次繼承關(guān)系。但是,一個(gè)類卻可以實(shí)現(xiàn)多個(gè)interface,實(shí)現(xiàn)多重繼承。接口還有標(biāo)識〔里面沒有任何方法,如Remote接口〕和數(shù)據(jù)共享〔里面的變量全是常量〕的作用?!?〕在abstractclass中可以有自己的數(shù)據(jù)成員,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態(tài)的不能被修改的數(shù)據(jù)成員〔也就是必須是staticfinal的,不過在interface中一般不定義數(shù)據(jù)成員〕,所有的成員方法默認(rèn)都是publicabstract類型的?!?〕abstractclass和interface所反映出的設(shè)計(jì)理念不同。其實(shí)abstractclass表示的是"is-a"關(guān)系,interface表示的是"has-a"關(guān)系?!?〕實(shí)現(xiàn)接口的一定要實(shí)現(xiàn)接口里定義的所有方法,而實(shí)現(xiàn)抽象類可以有選擇地重寫需要用到的方法,一般的應(yīng)用里,最頂級的是接口,然后是抽象類實(shí)現(xiàn)接口,最后才到具體類實(shí)現(xiàn)。抽象類中可以有非抽象方法。接口中那么不能有實(shí)現(xiàn)方法?!?〕接口中定義的變量默認(rèn)是publicstaticfinal型,且必須給其初值,所以實(shí)現(xiàn)類中不能重新定義,也不能改變其值。抽象類中的變量默認(rèn)是friendly型,其值可以在子類中重新定義,也可以在子類中重新賦值。29.閱讀Shape和Circle兩個(gè)類的定義。在序列化一個(gè)Circle的對象circle到文件時(shí),下面哪個(gè)字段會被保存到文件中?()classShape{

publicStringname;

}

classCircleextendsShapeimplementsSerializable{

privatefloatradius;

transientintcolor;

publicstaticStringtype="Circle";

}AnameBradiusCcolorDtype答案:B解析:這里有詳細(xì)的解釋:/lanxuezaipiao/p/3369962.html30.下面是People和Child類的定義和構(gòu)造方法,每個(gè)構(gòu)造方法都輸出編號。在執(zhí)行newChild("mike")的時(shí)候都有哪些構(gòu)造方法被順序調(diào)用?請選擇輸出結(jié)果()classPeople{

Stringname;

publicPeople(){

System.out.print(1);

}

publicPeople(Stringname){

System.out.print(2);

=na

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論