資源描述:
《java面試題及答案》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、第一,談?wù)刦inal,finally,finalize的區(qū)別。final修飾符(關(guān)鍵字)如果一個(gè)類(lèi)被聲明為final,意味著它不能再派生出新的子類(lèi),不能作為父類(lèi)被繼承。因此一個(gè)類(lèi)不能既被聲明為abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖?。被聲明為final的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載finally再異常處理時(shí)提供finally塊來(lái)執(zhí)行任何清除操作。如果拋出一個(gè)
2、異常,那么相匹配的catch子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入finally塊(如果有的話)。finalize方法名。Java技術(shù)允許使用finalize()方法在垃圾收集器將對(duì)象從內(nèi)存中清除出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對(duì)象沒(méi)有被引用時(shí)對(duì)這個(gè)對(duì)象調(diào)用的。它是在Object類(lèi)中定義的,因此所有的類(lèi)都繼承了它。子類(lèi)覆蓋finalize()方法以整理系統(tǒng)資源或者執(zhí)行其它清理工作。finalize()方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象調(diào)用的。第二,AnonymousInner
3、Class(匿名內(nèi)部類(lèi))是否可以extends(繼承)其它類(lèi),是否可以implements(實(shí)現(xiàn))interface(接口)?匿名的內(nèi)部類(lèi)是沒(méi)有名字的內(nèi)部類(lèi)。不能extends(繼承)其它類(lèi),但一個(gè)內(nèi)部類(lèi)可以作為一個(gè)接口,由另一個(gè)內(nèi)部類(lèi)實(shí)現(xiàn)。第三,StaticNestedClass和InnerClass的不同,說(shuō)得越多越好。NestedClass(一般是C++的說(shuō)法),InnerClass(一般是JAVA的說(shuō)法)。Java內(nèi)部類(lèi)與C++嵌套類(lèi)最大的不同就在于是否有指向外部的引用上。注:靜態(tài)內(nèi)部類(lèi)(I
4、nnerClass)意味著1創(chuàng)建一個(gè)static內(nèi)部類(lèi)的對(duì)象,不需要一個(gè)外部類(lèi)對(duì)象,2不能從一個(gè)static內(nèi)部類(lèi)的一個(gè)對(duì)象訪問(wèn)一個(gè)外部類(lèi)對(duì)象第四,&和&&的區(qū)別。&是位運(yùn)算符。&&是布爾邏輯運(yùn)算符。第五,HashMap和Hashtable的區(qū)別。都屬于Map接口的類(lèi),實(shí)現(xiàn)了將惟一鍵映射到特定的值上。HashMap類(lèi)沒(méi)有分類(lèi)或者排序。它允許一個(gè)null鍵和多個(gè)null值。Hashtable類(lèi)似于HashMap,但是不允許null鍵和null值。它也比HashMap慢,因?yàn)樗峭降?。第六,Colle
5、ction和Collections的區(qū)別。Collections是個(gè)java.util下的類(lèi),它包含有各種有關(guān)集合操作的靜態(tài)方法。Collection是個(gè)java.util下的接口,它是各種集合結(jié)構(gòu)的父接口。第七,什么時(shí)候用assert。斷言是一個(gè)包含布爾表達(dá)式的語(yǔ)句,在執(zhí)行這個(gè)語(yǔ)句時(shí)假定該表達(dá)式為true。如果表達(dá)式計(jì)算為false,那么系統(tǒng)會(huì)報(bào)告一個(gè)AssertionError。它用于調(diào)試目的:assert(a>0);//throwsanAssertionErrorifa<=0斷言可以有兩種形式
6、:assertExpression1;assertExpression1:Expression2;Expression1應(yīng)該總是產(chǎn)生一個(gè)布爾值。Expression2可以是得出一個(gè)值的任意表達(dá)式。這個(gè)值用于生成顯示更多調(diào)試信息的String消息。斷言在默認(rèn)情況下是禁用的。要在編譯時(shí)啟用斷言,需要使用source1.4標(biāo)記:javac-source1.4Test.java要在運(yùn)行時(shí)啟用斷言,可使用-enableassertions或者-ea標(biāo)記。要在運(yùn)行時(shí)選擇禁用斷言,可使用-da或者-disable
7、assertions標(biāo)記。要系統(tǒng)類(lèi)中啟用斷言,可使用-esa或者-dsa標(biāo)記。還可以在包的基礎(chǔ)上啟用或者禁用斷言??梢栽陬A(yù)計(jì)正常情況下不會(huì)到達(dá)的任何位置上放置斷言。斷言可以用于驗(yàn)證傳遞給私有方法的參數(shù)。不過(guò),斷言不應(yīng)該用于驗(yàn)證傳遞給公有方法的參數(shù),因?yàn)椴还苁欠駟⒂昧藬嘌?,公有方法都必須檢查其參數(shù)。不過(guò),既可以在公有方法中,也可以在非公有方法中利用斷言測(cè)試后置條件。另外,斷言不應(yīng)該以任何方式改變程序的狀態(tài)。第八,GC是什么?為什么要有GC?GC是垃圾收集器。Java程序員不用擔(dān)心內(nèi)存管理,因?yàn)槔占?/p>
8、器會(huì)自動(dòng)進(jìn)行管理。要請(qǐng)求垃圾收集,可以調(diào)用下面的方法之一:System.gc()Runtime.getRuntime().gc()第九,Strings=newString("xyz");創(chuàng)建了幾個(gè)StringObject?兩個(gè)對(duì)象,一個(gè)是“xyx”,一個(gè)是指向“xyx”的引用對(duì)象s。第十,Math.round(11.5)等于多少?Math.round(-11.5)等于多少?Math.round(11.5)返回(long)12,Math.round(-11.5)返回(l