




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
談?wù)刦inal,finally,finalize的區(qū)別。final—修飾符(關(guān)鍵字)如果一個(gè)類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個(gè)類不能既被聲明為abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖?。被聲明為final的類變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。局部變量聲明時(shí)可以不賦值,生命周期內(nèi)只能賦值一次。被聲明為final的方法也同樣只能使用,不能重寫(子類覆蓋),可以重載。
finally—異常處理時(shí)提供finally塊來(lái)執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配的catch子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入finally塊(如果有的話)。finally語(yǔ)句總會(huì)被執(zhí)行,如果遇到return的話,就先跑去執(zhí)行finally,再returnfinalize—方法名。Java技術(shù)允許使用finalize()方法在垃圾收集器將對(duì)象從內(nèi)存中清除出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對(duì)象沒有被引用時(shí)對(duì)這個(gè)對(duì)象調(diào)用的。它是在Object類中定義的,因此所有的類都繼承了它。子類覆蓋finalize()方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize()方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象調(diào)用的。AnonymousInnerClass(匿名內(nèi)部類)是否可以extends(繼承)其它類,是否可以implements(實(shí)現(xiàn))interface(接口)? 匿名類在實(shí)現(xiàn)時(shí),必須借助一個(gè)類或一個(gè)接口,若從這個(gè)層次說(shuō)它是可以繼承一個(gè)類或一個(gè)接口的。但是通過(guò)extendsimplements關(guān)鍵字那是不可能的。一個(gè)內(nèi)部類可以作為一個(gè)接口由另一個(gè)內(nèi)部類實(shí)現(xiàn)。在使用匿名內(nèi)部類時(shí),要記住以下幾個(gè)原則:
·匿名內(nèi)部類不能有構(gòu)造方法。
·匿名內(nèi)部類不能定義任何靜態(tài)成員、方法和類。
·匿名內(nèi)部類不能是public,protected,private,static。
·只能創(chuàng)建匿名內(nèi)部類的一個(gè)實(shí)例。
·一個(gè)匿名內(nèi)部類一定是在new的后面,用其隱含實(shí)現(xiàn)一個(gè)接口或?qū)崿F(xiàn)一個(gè)類。
·因匿名內(nèi)部類為局部?jī)?nèi)部類,所以局部?jī)?nèi)部類的所有限制都對(duì)其生效。
StaticNestedClass和InnerClass的不同,說(shuō)得越多越好(面試題有的很籠統(tǒng))。NestedClass一般是C++的說(shuō)法,InnerClass一般是JAVA的說(shuō)法。
Nestedclass分為靜態(tài)Staticnestedclass的和非靜態(tài)的innerclass,
靜態(tài)的Staticnestedclass是不可以直接調(diào)用它的外部類enclosingclass的,但是可以通過(guò)外部類的引用來(lái)調(diào)用,就像你在一個(gè)類中寫了main方法一樣。
非靜態(tài)類innerclass可以自由的引用外部類的屬性和方法,但是它與一個(gè)實(shí)例綁定在了一起,不可以定義靜態(tài)的屬性、方法。
InnerClass(內(nèi)部類)定義在類中的類。
NestedClass(嵌套類)是靜態(tài)(static)內(nèi)部類。1.要?jiǎng)?chuàng)建嵌套類的對(duì)象,并不需要其外圍類的對(duì)象。2.不能從嵌套類的對(duì)象中訪問(wèn)非靜態(tài)的外圍類對(duì)象。
AnonymousInnerClass(匿名內(nèi)部類)匿名的內(nèi)部類是沒有名字的內(nèi)部類。
第四,&和&&的區(qū)別?!?&”是邏輯運(yùn)算中的“短路”,若"&&"前的條件為false時(shí)判斷結(jié)果為false,不再執(zhí)行"&&"后的語(yǔ)句塊。"&&"前為true則繼續(xù)進(jìn)行進(jìn)行后半部分的判斷
“&”是兩邊都要經(jīng)過(guò)判斷&&是邏輯運(yùn)算符,表示邏輯與&是位運(yùn)算符,表示位與;位運(yùn)算針對(duì)二進(jìn)制數(shù)0和1;0&0=0,0&1=0,1&0=0,1&1=1HashMap和Hashtable的區(qū)別。1.hashMap去掉了HashTable的contains方法,但是加上了containsValue()和containsKey()方法。
2.hashTable同步的,而HashMap是非同步的,效率上比hashTable要高。
3.hashMap允許空鍵值,而hashTable不允許。第六,Collection和Collections的區(qū)別。Collection和Collections的區(qū)別。
Collections是個(gè)java.util下的類,它包含有各種有關(guān)集合操作的靜態(tài)方法。排序(Sort)2)混排(Shuffling)3)反轉(zhuǎn)(Reverse)4)替換所以的元素(Fill)5)拷貝(Copy)
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)試目的GC是什么?為什么要有GC?GC是垃圾收集的意思(GabageCollection),Java有了GC,就不需要程序員去人工釋放內(nèi)存空間。當(dāng)Java虛擬機(jī)發(fā)覺內(nèi)存資源緊張的時(shí)候,就會(huì)自動(dòng)地去清理無(wú)用變量所占用的內(nèi)存空間。當(dāng)然,如果需要,程序員可以在Java程序中顯式地使用System.gc()來(lái)強(qiáng)制進(jìn)行一次立即的內(nèi)存清理。Strings=newString("xyz");創(chuàng)建了幾個(gè)StringObject?一個(gè)是編譯時(shí)決定的,最后放在常量池中。一個(gè)是運(yùn)行時(shí)放在堆里面的。兩個(gè)都是"xyz",常量池中只可能只有一個(gè)“xyz”,但是堆中可能有多個(gè),因?yàn)槟氵@里用了newString來(lái)強(qiáng)制在堆中再創(chuàng)建了一個(gè)對(duì)象,所以是兩個(gè)哈;如果是Strings="xyz"這樣的,s這個(gè)引用就會(huì)直接指向常量池的"xyz",而不會(huì)是指向你在堆中創(chuàng)建的“xyz”。Math.round(11.5)等於多少?Math.round(-11.5)等於多少?他表示“四舍五入”,算法為Math.floor(x+0.5),即將原來(lái)的數(shù)字加上0.5后再向下取整,所以,Math.round(11.5)的結(jié)果是12,Math.round(-11.5)的結(jié)果為-11.ceil向上取整第十一,shorts1=1;s1=s1+1;有什么錯(cuò)?shorts1=1;s1+=1;有什么錯(cuò)?short占2個(gè)字節(jié),int占4個(gè)字節(jié),short型變量+上int型值計(jì)算結(jié)果是int型,占4個(gè)字節(jié),然后付給一個(gè)short型變量s1,就要丟失2個(gè)字節(jié)的精度,這是不容許的。你非要這么做的話,我給你提供一個(gè)辦法:
簡(jiǎn)單賦值運(yùn)算和復(fù)合賦值運(yùn)算的最大差別就在于:復(fù)合賦值運(yùn)算符會(huì)自動(dòng)地將運(yùn)算結(jié)果轉(zhuǎn)型為其左操作數(shù)的類型!第十二,sleep()和wait()有什么區(qū)別?sleep是線程類(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間,給執(zhí)行機(jī)會(huì)給其他線程,但是監(jiān)控狀態(tài)依然保持,到時(shí)后會(huì)自動(dòng)恢復(fù)。調(diào)用sleep不會(huì)釋放對(duì)象鎖。
wait是Object類的方法,對(duì)此對(duì)象調(diào)用wait方法導(dǎo)致本線程放棄對(duì)象鎖,進(jìn)入等待此對(duì)象的等待鎖定池,只有針對(duì)此對(duì)象發(fā)出notify方法(或notifyAll)后本線程才進(jìn)入對(duì)象鎖定池準(zhǔn)備獲得對(duì)象鎖進(jìn)入運(yùn)行狀態(tài)。第十三,Java有沒有g(shù)oto?goto,const都是Java的保留字但并沒有實(shí)現(xiàn)它,一直不用,所以現(xiàn)在就等于沒有。第十四,數(shù)組有沒有l(wèi)ength()這個(gè)方法?String有沒有l(wèi)ength()這個(gè)方法?
數(shù)組中沒有l(wèi)ength()這個(gè)方法,但是數(shù)組中有l(wèi)ength這個(gè)屬性。用來(lái)表示數(shù)組的長(zhǎng)度。
String中有l(wèi)ength()這個(gè)方法。用來(lái)得到字符串的長(zhǎng)度。第十五,Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)。第十六,Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢?是用==還是equals()?它們有何區(qū)別?==是用來(lái)判斷兩者是否是同一對(duì)象,而equals是用來(lái)判斷是否引用同一個(gè)對(duì)象。再看一下Set里面存的是對(duì)象,還是對(duì)象的引用。根據(jù)java的存儲(chǔ)機(jī)制可知,set里面存放的是對(duì)象的引用,所以當(dāng)兩個(gè)元素只要滿足了equals()時(shí)就已經(jīng)指向同一個(gè)對(duì)象,也就出現(xiàn)了重復(fù)元素。所以應(yīng)該用equals()來(lái)判斷。第十七,給我一個(gè)你最常見到的runtimeexception。ClassCastException對(duì)象強(qiáng)轉(zhuǎn)時(shí)出錯(cuò)NullPointerExceptionArrayIndexOutOfBoundsException一般異常:
IOException
FileNotFoundException
SqlException第十八,error和exception有什么區(qū)別?Error類和Exception類都繼續(xù)自Throwable類。Exception:1.可以是可被控制(checked)或不可控制的(unchecked)?2.表示一個(gè)由程序員導(dǎo)致的錯(cuò)誤?3.應(yīng)該在應(yīng)用程序級(jí)被處理Error:1.總是不可控制的(unchecked)?2.經(jīng)常用來(lái)用于表示系統(tǒng)錯(cuò)誤或低層資源的錯(cuò)誤?3.如何可能的話,應(yīng)該在系統(tǒng)級(jí)被捕捉像內(nèi)存溢出之類的就是error第十九,List,Set,Map是否繼承自Collection接口?Map沒有繼承Collection接口,Map提供key到value的映射。一個(gè)Map中不能包含相同key,每個(gè)key只能映射一個(gè)value第二十,abstractclass和interface有什么區(qū)別?前者是抽象類,后者是接口。
抽象類和接口都可以被繼承,不同的是,接口內(nèi)的方法不能實(shí)現(xiàn),需要繼承的類來(lái)具體實(shí)現(xiàn)其方法,而抽象類中的方法可以被具體實(shí)現(xiàn),并且繼承的類可以重寫其方法。一個(gè)類可以繼承一個(gè)抽象類,但是可以繼承多個(gè)接口。通常,接口被運(yùn)用于實(shí)現(xiàn)比較常用的功能,便于日后維護(hù)或者添加刪除方法,而抽象類更傾向于充當(dāng)公共類的角色。不適于在日后重新對(duì)里面的代碼進(jìn)行修改。第二十一,abstract的method是否可同時(shí)是static,是否可同時(shí)是native,是否可同時(shí)是synchronized?abstract需要重載,static為類方法,沒有覆蓋一說(shuō)
.abstract為沒有實(shí)現(xiàn)的方法,native為本機(jī)實(shí)現(xiàn)的方法,自相矛盾.abstract方法沒有實(shí)現(xiàn),也不可能實(shí)際調(diào)用抽象方法,沒有必要synchronized修飾,當(dāng)然子類可以根據(jù)需要同步該方法.所以
都不能第二十二,接口是否可繼承接口?抽象類是否可實(shí)現(xiàn)(implements)接口?抽象類是否可繼承實(shí)體類(concreteclass)?接口可以繼承接口。抽象類可以實(shí)現(xiàn)(implements)接口,抽象類是否可繼承實(shí)體類,但前提是實(shí)體類必須有明確的構(gòu)造函數(shù)。第二十三,啟動(dòng)一個(gè)線程是用run()還是start()?啟動(dòng)一個(gè)線程是調(diào)用start()方法,使線程所代表的虛擬處理機(jī)處于可運(yùn)行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會(huì)立即運(yùn)行。第二十四,構(gòu)造器Constructor是否可被override?構(gòu)造器Constructor不能被繼承,因此不能重寫Override。但在同類中可以被重載Overload。第二十五,是否可以繼承String類?它是finally類,主要是為了“效率”和“安全性”的緣故。若String允許被繼承,由于它的高度被使用率,可能會(huì)降低程序的性能,所以String被定義成final。第二十六,當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法?可以進(jìn)入其他非synchronized的方法,synchronized的方法不可以的如果一個(gè)對(duì)象有多個(gè)synchronized方法,某一時(shí)刻某個(gè)線程已經(jīng)進(jìn)入到了某個(gè)synchronized方法,那么在該方法沒有執(zhí)行完畢前,其他線程是無(wú)法訪問(wèn)該對(duì)象的任何synchronized方法的。第二十七,try{}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally{}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后?只有代碼中有system.exit()
這一種情況
才不會(huì)執(zhí)行finally,因?yàn)榻K止了虛擬機(jī)進(jìn)程第二十八,編程題:用最有效率的方法算出2乘以8等於幾?用移位運(yùn)算inta=2<<3;
a就是2乘以8最后結(jié)果是16這是最省內(nèi)存最有效率的方法
這個(gè)方法
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)用設(shè)備運(yùn)輸合同范本
- 叉車臨時(shí)用工合同范本
- 和店面解約合同范本
- 公寓酒水配送合同范本
- 吊裝車租用合同范本
- 供銷商品合同范本
- 五星級(jí)酒店安保合同范例
- 廚房家電預(yù)售合同范本
- 書購(gòu)貨合同范本
- 發(fā)電玻璃租賃合同范本
- 《新媒體導(dǎo)論》(第二版)課件全套 -第1-9章 理解新媒體:多重屬性的復(fù)合-新媒體文化:流動(dòng)的亞文化
- 安徽高中畢業(yè)生登記表
- 看不見的森林
- 安全用梯專題培訓(xùn)
- 中小學(xué)教師專業(yè)標(biāo)準(zhǔn)解讀
- cw3-2500m萬(wàn)能式斷路器說(shuō)明書
- 《文化權(quán)力與國(guó)家》讀書筆記概況
- 新概念英語(yǔ)二第60課完整課件
- 大學(xué)生心理健康教育第四章大學(xué)生學(xué)習(xí)心理課件
- 企業(yè)實(shí)際控制人的協(xié)議書
- 蘇教版(2023秋)四年級(jí)科學(xué)下冊(cè)1.2《熱脹冷縮》教學(xué)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論