java經(jīng)典面試題匯總_第1頁(yè)
java經(jīng)典面試題匯總_第2頁(yè)
java經(jīng)典面試題匯總_第3頁(yè)
java經(jīng)典面試題匯總_第4頁(yè)
java經(jīng)典面試題匯總_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Java 基礎(chǔ)方面 :1、作用域 public,private,protected, 以及不寫(xiě)時(shí)的區(qū)別答:區(qū)別如下:作用域 當(dāng)前類(lèi) 同一 package 子孫類(lèi) 其他 packagepublic protected ×friendly × ×private × × ×不寫(xiě)時(shí)默認(rèn)為 friendly2、 Anonymous Inner Class (匿 名 內(nèi) 部 類(lèi) 是 否 可 以 extends(繼 承 其 它 類(lèi) , 是 否 可 以 implements(實(shí)現(xiàn) interface(接口 答:匿名的內(nèi)部類(lèi)是沒(méi)有名字的內(nèi)部類(lèi)。不能 e

2、xtends(繼承 其它類(lèi),但一個(gè)內(nèi)部類(lèi)可以作 為一個(gè)接口,由另一個(gè)內(nèi)部類(lèi)實(shí)現(xiàn)3、 Static Nested Class 和 Inner Class的不同答:Nested Class (一般是 C+的說(shuō)法 , Inner Class (一般是 JA V A 的說(shuō)法 。 Java 內(nèi)部類(lèi)與 C+嵌套類(lèi)最大的不同就在于是否有指向外部的引用上 。注:靜態(tài)內(nèi)部類(lèi)(Inner Class意 味著 1創(chuàng)建一個(gè) static 內(nèi)部類(lèi)的對(duì)象, 不需要一個(gè)外部類(lèi)對(duì)象, 2不能從一個(gè) static 內(nèi)部類(lèi)的 一個(gè)對(duì)象訪(fǎng)問(wèn)一個(gè)外部類(lèi)對(duì)象4、 &和 &&的區(qū)別答:&是位運(yùn)算符,表示按

3、位與運(yùn)算, &&是邏輯運(yùn)算符,表示邏輯與(and 5、 Collection 和 Collections的區(qū)別答:Collection 是集合類(lèi)的上級(jí)接口,繼承與他的接口主要有 Set 和 List.Collections 是針對(duì)集合類(lèi)的一個(gè)幫助類(lèi), 他提供一系列靜態(tài)方法實(shí)現(xiàn)對(duì)各種集合的搜索、 排 序、線(xiàn)程安全化等操作6、什么時(shí)候用 assert答:assertion(斷言 在軟件開(kāi)發(fā)中是一種常用的調(diào)試方式,很多開(kāi)發(fā)語(yǔ)言中都支持這種機(jī)制。 在實(shí)現(xiàn)中, assertion 就是在程序中的一條語(yǔ)句,它對(duì)一個(gè) boolean 表達(dá)式進(jìn)行檢查, 一個(gè)正 確程序必須保證這個(gè) boolea

4、n 表達(dá)式的值為 true ;如果該值為 false ,說(shuō)明程序已經(jīng)處于不正 確的狀態(tài)下,系統(tǒng)將給出警告或退出。一般來(lái)說(shuō), assertion 用于保證程序最基本、關(guān)鍵的正 確性。 assertion 檢查通常在開(kāi)發(fā)和測(cè)試時(shí)開(kāi)啟。為了提高性能,在軟件發(fā)布后, assertion 檢 查通常是關(guān)閉的7、 String s = new String("xyz"創(chuàng)建了幾個(gè) String Object答:兩個(gè),一個(gè)字符對(duì)象,一個(gè)字符對(duì)象引用對(duì)象8、 Math.round(11.5等於多少 ? Math.round(-11.5等於多少答 : Math.round(11.5=12;Ma

5、th.round(-11.5=-11;round方法返回與參數(shù)最接近的長(zhǎng)整數(shù), 參 數(shù)加 1/2后求其 floor9、 short s1 = 1; s1 = s1 + 1;有什么錯(cuò) ? short s1 = 1; s1 += 1;有什么錯(cuò)答:short s1 = 1; s1 = s1 + 1; (s1+1運(yùn)算結(jié)果是 int 型, 需要強(qiáng)制轉(zhuǎn)換類(lèi)型 short s1 = 1; s1 += 1; (可以正確編譯10、 Java 有沒(méi)有 goto答:java 中的保留字,現(xiàn)在沒(méi)有在 java 中使用11、數(shù)組有沒(méi)有 length(這個(gè)方法 ? String有沒(méi)有 length(這個(gè)方法答:數(shù)組沒(méi)有

6、length(這個(gè)方法,有 length 的屬性。 String 有有 length(這個(gè)方法12、 Overload 和 Override 的區(qū)別。 Overloaded 的方法是否可以改變返回值的類(lèi)型答:方法的重寫(xiě) Overriding 和重載 Overloading 是 Java 多態(tài)性的不同表現(xiàn)。 重寫(xiě) Overriding 是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現(xiàn),重載 Overloading 是一個(gè)類(lèi)中多態(tài)性的一種表現(xiàn)。 如 果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱(chēng)和參數(shù),我們說(shuō)該方法被重寫(xiě) (Overriding。 子類(lèi)的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類(lèi)中的定義,對(duì)它而言,父類(lèi)中的定義如同

7、被 " 屏蔽 " 了。 如果在一個(gè)類(lèi)中定義了多個(gè)同名的方法, 它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類(lèi)型, 則稱(chēng)為方法的重載 (Overloading。 Overloaded 的方法是可以改變返回值的類(lèi)型13、 Set 里的元素是不能重復(fù)的, 那么用什么方法來(lái)區(qū)分重復(fù)與否呢 ? 是用 =還是 equals(? 它 們有何區(qū)別答:Set 里的元素是不能重復(fù)的, 那么用 iterator(方法來(lái)區(qū)分重復(fù)與否 。 equals(是判讀兩個(gè) Set 是否相等equals(和 =方法決定引用值是否指向同一對(duì)象 equals(在類(lèi)中被覆蓋, 為的是當(dāng)兩個(gè)分離 的對(duì)象的內(nèi)容和類(lèi)型相配的話(huà),

8、返回真值14、給我一個(gè)你最常見(jiàn)到的 runtime exception答 :常 見(jiàn) 的 運(yùn) 行 時(shí) 異 常 有 如 下 這 些 ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowExceptio n, CannotRedoException, CannotUndoException, ClassCastException, CMMException, Concurre ntModificationException, DOMException, EmptyStackExceptio

9、n, IllegalArgumentException, Ille galMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpExceptio n, IndexOutOfBoundsException , MissingResourceException, NegativeArraySizeException, NoSu chElementException, NullPointerException , ProfileDataException, ProviderException

10、, RasterFor matException, SecurityException, SystemException, UndeclaredThrowableException, Unmodifia bleSetException, UnsupportedOperationException15、 error 和 exception 有什么區(qū)別答:error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問(wèn)題。比如說(shuō)內(nèi)存溢出。不可 能指望程序能處理這樣的情況exception 表示一種設(shè)計(jì)或?qū)崿F(xiàn)問(wèn)題。也就是說(shuō),它表示如果程序運(yùn)行正常,從不會(huì)發(fā)生 的情況16、 List, Set, Map是否

11、繼承自 Collection 接口答: List, Set 是, Map 不是17、 abstract class和 interface 有什么區(qū)別答:聲明方法的存在而不去實(shí)現(xiàn)它的類(lèi)被叫做抽象類(lèi)(abstract class ,它用于要?jiǎng)?chuàng)建一個(gè)體 現(xiàn)某些基本行為的類(lèi),并為該類(lèi)聲明方法,但不能在該類(lèi)中實(shí)現(xiàn)該類(lèi)的情況。不能創(chuàng)建 abstract 類(lèi)的實(shí)例。 然而可以創(chuàng)建一個(gè)變量,其類(lèi)型是一個(gè)抽象類(lèi),并讓它指向具 體子類(lèi)的一個(gè)實(shí)例 。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。 Abstract 類(lèi)的子類(lèi)為它們父類(lèi) 中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類(lèi)為。取而代之, 在子類(lèi)中實(shí)現(xiàn)該方法。知 道其行為的

12、其它類(lèi)可以在類(lèi)中實(shí)現(xiàn)這些方法接口(interface 是抽象類(lèi)的變體。在接口中,所有方法都是抽象的。 多繼承性 可通過(guò) 實(shí)現(xiàn)這樣的接口而獲得。 接口中的所有方法都是抽象的, 沒(méi)有一個(gè)有程序體。 接口只可以定義 static final成員變量 。接口的實(shí)現(xiàn)與子類(lèi)相似,除了該實(shí)現(xiàn)類(lèi)不能從接口定義中繼 承行為。當(dāng)類(lèi)實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予所有這種接口的方法。然后,它 可以在實(shí)現(xiàn)了該接口的類(lèi)的任何對(duì)象上調(diào)用接口的方法。 由于有抽象類(lèi), 它允許使用接口名 作為引用變量的類(lèi)型。 通常的動(dòng)態(tài)聯(lián)編將生效。 引用可以轉(zhuǎn)換到接口類(lèi)型或從接口類(lèi)型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來(lái)決定某對(duì)象的

13、類(lèi)是否實(shí)現(xiàn)了接口18、 abstract 的 method 是否可同時(shí)是 static, 是否可同時(shí)是 native ,是否可同時(shí)是 synchronized 答:都不能19、接口是否可繼承接口 ? 抽象類(lèi)是否可實(shí)現(xiàn) (implements接口 ? 抽象類(lèi)是否可繼承實(shí)體類(lèi) (concrete class答:接口可以繼承接口。抽象類(lèi)可以實(shí)現(xiàn) (implements接口, 抽象類(lèi)是否可繼承實(shí)體類(lèi),但 前提是實(shí)體類(lèi)必須有明確的構(gòu)造函數(shù)20、構(gòu)造器 Constructor 是否可被 override答:構(gòu)造器 Constructor 不能被繼承,因此不能重寫(xiě) Overriding ,但可以被重載 Ov

14、erloading 21、是否可以繼承 String 類(lèi)答:String 類(lèi)是 final 類(lèi)故不可以繼承22、 try 里有一個(gè) return 語(yǔ)句, 那么緊跟在這個(gè) try 后的 finally 里的 code 會(huì)不會(huì)被執(zhí)行, 什么時(shí)候被執(zhí)行,在 return 前還是后答:會(huì)執(zhí)行, 在 return 前執(zhí)行23、用最有效率的方法算出 2乘以 8等於幾答:2 << 324、兩個(gè)對(duì)象值相同 (x.equals(y = true ,但卻可有不同的 hash code,這句話(huà)對(duì)不對(duì)答:不對(duì), 有相同的 hash code25、 當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后, 此方法可改變這個(gè)對(duì)

15、象的屬性, 并可返回變 化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞答:是值傳遞。 Java 編程語(yǔ)言只有值傳遞參數(shù)。 當(dāng)一個(gè)對(duì)象實(shí)例作為一個(gè)參數(shù)被傳遞到方法 中時(shí), 參數(shù)的值就是對(duì)該對(duì)象的引用。 對(duì)象的內(nèi)容可以在被調(diào)用的方法中改變, 但對(duì)象的引 用是永遠(yuǎn)不會(huì)改變的26、 swtich 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上答:witch (expr1中, expr1是一個(gè)整數(shù)表達(dá)式。因此傳遞給 switch 和 case 語(yǔ)句的參數(shù)應(yīng) 該是 int、 short、 char 或者 byte。 long,string 都不能作用于 swtich2

16、7、 ArrayList 和 Vector 的區(qū)別 ,HashMap 和 Hashtable 的區(qū)別答:就 ArrayList 與 Vector 主要從二方面來(lái)說(shuō) .一 . 同步性 :Vector是線(xiàn)程安全的,也就是說(shuō)是同步的,而 ArrayList 是線(xiàn)程序不安全的,不是 同步的二 . 數(shù)據(jù)增長(zhǎng) :當(dāng)需要增長(zhǎng)時(shí) ,Vector 默認(rèn)增長(zhǎng)為原來(lái)一培,而 ArrayList 卻是原來(lái)的一半就 HashMap 與 HashTable 主要從三方面來(lái)說(shuō)。一 . 歷史原因 :Hashtable是基于陳舊的 Dictionary 類(lèi)的, HashMap 是 Java 1.2引進(jìn)的 Map 接口 的一個(gè)實(shí)

17、現(xiàn)二 . 同步性 :Hashtable是線(xiàn)程安全的,也就是說(shuō)是同步的,而 HashMap 是線(xiàn)程序不安全的, 不是同步的三 . 值:只有 HashMap 可以讓你將空值作為一個(gè)表的條目的 key 或 value28、 char 型變量中能不能存貯一個(gè)中文漢字 ? 為什么 ?答:是能夠定義成為一個(gè)中文的,因?yàn)?java 中以 unicode 編碼, 一個(gè) char 占 16個(gè)字節(jié),所 以放一個(gè)中文是沒(méi)問(wèn)題的29、 GC 是什么 ? 為什么要有 GC答:GC 是垃圾收集的意思(Gabage Collection , 內(nèi)存處理是編程人員容易出現(xiàn)問(wèn)題的地方, 忘記或者錯(cuò)誤的內(nèi)存回收會(huì)導(dǎo)致程序或系統(tǒng)的不

18、穩(wěn)定甚至崩潰, Java 提供的 GC 功能可以自 動(dòng)監(jiān)測(cè)對(duì)象是否超過(guò)作用域從而達(dá)到自動(dòng)回收內(nèi)存的目的, Java 語(yǔ)言沒(méi)有提供釋放已分配內(nèi)存的顯示操作方法。30、 float 型 float f=3.4是否正確 ?答 :不正確。精度不準(zhǔn)確 , 應(yīng)該用強(qiáng)制類(lèi)型轉(zhuǎn)換,如下所示:float f=(float3.431、介紹 JA V A 中的 Collection FrameWork(包括如何寫(xiě)自己的數(shù)據(jù)結(jié)構(gòu) ?答:Collection FrameWork如下:CollectionListLinkedListArrayListVector StackSetMapHashtableHashMapWe

19、akHashMapCollection 是最基本的集合接口,一個(gè) Collection 代表一組 Object ,即 Collection 的元素 (Elements Map 提供 key 到 value 的映射32、抽象類(lèi)與接口?答:抽象類(lèi)與接口都用于抽象,但是 抽象類(lèi) (JAV A 中 可以有自己的部分實(shí)現(xiàn),而接口則完 全是一個(gè)標(biāo)識(shí) (同時(shí)有多重繼承的功能 。Collection 框架中實(shí)現(xiàn)比較要實(shí)現(xiàn) Comparable 接口和 Comparator 接口33、 STRING 與 STRINGBUFFER 的區(qū)別。答:STRING 的長(zhǎng)度是不可變的, STRINGBUFFER 的長(zhǎng)度是可

20、變的。如果你對(duì)字符串中的 內(nèi)容經(jīng)常進(jìn)行操作,特別是內(nèi)容要修改時(shí),那么使用 StringBuffer ,如果最后需要 String ,那 么使用 StringBuffer 的 toString(方法34、談?wù)?final, finally, finalize的區(qū)別答:final? 修飾符(關(guān)鍵字如果一個(gè)類(lèi)被聲明為 final ,意味著它不能再派生出新的子類(lèi), 不能作為父類(lèi)被繼承。 因此一個(gè)類(lèi)不能既被聲明為 abstract的, 又被聲明為 final 的。 將變量 或方法聲明為 final ,可以保證它們?cè)谑褂弥胁槐桓淖?。 被聲明為 final 的變量必須在聲明時(shí) 給定初值,而在以后的引用中只

21、能讀取,不可修改。被聲明為 final 的方法也同樣只能使用, 不能重載finally? 再異常處理時(shí)提供 finally 塊來(lái)執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配 的 catch 子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入 finally 塊(如果有的話(huà)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í)行其他清理工作。 fina

22、lize( 方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象 調(diào)用的35、面向?qū)ο蟮奶卣饔心男┓矫娲?主要有以下四方面:1. 抽象:抽象就是忽略一個(gè)主題中與當(dāng)前目標(biāo)無(wú)關(guān)的那些方面, 以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的 方面。 抽象并不打算了解全部問(wèn)題, 而只是選擇其中的一部分,暫時(shí)不用部分細(xì)節(jié)。抽象包 括兩個(gè)方面, 一是過(guò)程抽象,二是數(shù)據(jù)抽象 。2. 繼承:繼承是一種聯(lián)結(jié)類(lèi)的層次模型, 并且允許和鼓勵(lì)類(lèi)的重用, 它提供了一種明確表述共性的方 法。 對(duì)象的一個(gè)新類(lèi)可以從現(xiàn)有的類(lèi)中派生, 這個(gè)過(guò)程稱(chēng)為類(lèi)繼承。 新類(lèi)繼承了原始類(lèi)的特 性,新類(lèi)稱(chēng)為原始類(lèi)的派生類(lèi)(子類(lèi) ,而原始類(lèi)稱(chēng)為新類(lèi)的基類(lèi)(父類(lèi) 。派生類(lèi)可

23、以從它 的基類(lèi)那里繼承方法和實(shí)例變量,并且類(lèi)可以修改或增加新的方法使之更適合特殊的需要。 3. 封裝:封裝是把過(guò)程和數(shù)據(jù)包圍起來(lái), 對(duì)數(shù)據(jù)的訪(fǎng)問(wèn)只能通過(guò)已定義的界面。 面向?qū)ο笥?jì)算始于這 個(gè)基本概念, 即現(xiàn)實(shí)世界可以被描繪成一系列完全自治、 封裝的對(duì)象, 這些對(duì)象通過(guò)一個(gè)受 保護(hù)的接口訪(fǎng)問(wèn)其他對(duì)象。4. 多態(tài)性:多態(tài)性是指允許不同類(lèi)的對(duì)象對(duì)同一消息作出響應(yīng) 。多態(tài)性包括 參數(shù)化多態(tài)性 和 包含多態(tài) 性 。多態(tài)性語(yǔ)言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢(shì),很好的解決了應(yīng)用程序函數(shù) 同名問(wèn)題。36、 String 是最基本的數(shù)據(jù)類(lèi)型嗎37、 int 和 Integer 有什么區(qū)別答:Java 提

24、供兩種不同的類(lèi)型:引用類(lèi)型和原始類(lèi)型(或內(nèi)置類(lèi)型 。 Int 是 java 的原始數(shù) 據(jù)類(lèi)型, Integer 是 java 為 int 提供的封裝類(lèi)。 Java 為每個(gè)原始類(lèi)型提供了封裝類(lèi)。原 始 類(lèi) 型 封 裝 類(lèi) ,booleanBoolean,charCharacter,byteByte,shortShort,intInteger,longLong,floatFloat,doubleDoub le引用類(lèi)型和原始類(lèi)型的行為完全不同, 并且它們具有不同的語(yǔ)義。 引用類(lèi)型和原始類(lèi)型具有 不同的特征和用法, 它們包括:大小和速度問(wèn)題, 這種類(lèi)型以哪種類(lèi)型的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ),當(dāng) 引用類(lèi)型和原始類(lèi)型用

25、作某個(gè)類(lèi)的實(shí)例數(shù)據(jù)時(shí)所指定的缺省值。 對(duì)象引用實(shí)例變量的缺省值 為 null,而原始類(lèi)型實(shí)例變量的缺省值與它們的類(lèi)型有關(guān)38、運(yùn)行時(shí)異常與一般異常有何異同答:異常表示程序運(yùn)行過(guò)程中可能出現(xiàn)的非正常狀態(tài), 運(yùn)行時(shí)異常表示虛擬機(jī)的通常操作中 可能遇到的異常, 是一種常見(jiàn)運(yùn)行錯(cuò)誤。 java 編譯器要求方法必須聲明拋出可能發(fā)生的非運(yùn) 行時(shí)異常,但是并不要求必須聲明拋出未被捕獲的運(yùn)行時(shí)異常。39、說(shuō)出 ArrayList,Vector, LinkedList的存儲(chǔ)性能和特性答:ArrayList 和 Vector 都是使用數(shù)組方式存儲(chǔ)數(shù)據(jù),此數(shù)組元素?cái)?shù)大于實(shí)際存儲(chǔ)的數(shù)據(jù)以 便增加和插入元素, 它們都允

26、許直接按序號(hào)索引元素, 但是插入元素要涉及數(shù)組元素移動(dòng)等 內(nèi)存操作, 所以 索引數(shù)據(jù)快而插入數(shù)據(jù)慢 , Vector 由于使用了 synchronized 方法 (線(xiàn)程安全 , 通常性能上較 ArrayList 差,而 LinkedList 使用雙向鏈表實(shí)現(xiàn)存儲(chǔ),按序號(hào)索引數(shù)據(jù)需要進(jìn) 行前向或后向遍歷,但是插入數(shù)據(jù)時(shí)只需要記錄本項(xiàng)的前后項(xiàng)即可,所以插入速度較快。 40、 HashMap 和 Hashtable 的區(qū)別答:HashMap 是 Hashtable 的輕量級(jí)實(shí)現(xiàn)(非線(xiàn)程安全的實(shí)現(xiàn) ,他們都完成了 Map 接口, 主 要區(qū)別在于 HashMap 允許空 (null 鍵值 (key ,

27、由于非線(xiàn)程安全, 效率上可能高于 Hashtable 。 HashMap 允許將 null 作為一個(gè) entry 的 key 或者 value ,而 Hashtable 不允許 。把余下的元素分割為兩段 left 和 r i g h t, 使得 l e f t 中的元素都小于等于支點(diǎn),而 right 中的 元素都大于等于支點(diǎn) 遞歸地使用快速排序方法對(duì) left 進(jìn)行排序 遞歸地使用快速排序方法對(duì) right 進(jìn)行排序 所得結(jié)果為 l e f t + m i d d l e + r i g h t 47、 JAVA 語(yǔ)言如何進(jìn)行異常處理, 關(guān)鍵字: throws,throw,try,catch,

28、finally 分別代表什么意義? 在 try 塊中可以?huà)伋霎惓幔?答:Java 通過(guò)面向?qū)ο蟮姆椒ㄟM(jìn)行異常處理,把各種不同的異常進(jìn)行分類(lèi),并提供了良好的 接口。在 Java 中,每個(gè)異常都是一個(gè)對(duì)象,它是 Throwable 類(lèi)或其它子類(lèi)的實(shí)例。當(dāng)一個(gè) 方法出現(xiàn)異常后便拋出一個(gè)異常對(duì)象, 該對(duì)象中包含有異常信息, 調(diào)用這個(gè)對(duì)象的方法可以 捕獲到這個(gè)異常并進(jìn)行處理。 Java 的異常處理是通過(guò) 5 個(gè)關(guān)鍵詞來(lái)實(shí)現(xiàn)的: catch、 try、 throw、 throws 和 finally。 一般情況下是用 try 來(lái)執(zhí)行一段程序, 如果出現(xiàn)異常, 系統(tǒng)會(huì)拋出 (throws) 一個(gè)異常,這時(shí)

29、候你可以通過(guò)它的類(lèi)型來(lái)捕捉(catch)它,或最后(finally)由缺省處理器 來(lái)處理。 用 try 來(lái)指定一塊預(yù)防所有"異常"的程序。緊跟在 try 程序后面,應(yīng)包含一個(gè) catch 子句來(lái)指 定你想要捕捉的"異常"的類(lèi)型。 throw 語(yǔ)句用來(lái)明確地拋出一個(gè)"異常"。 throws 用來(lái)標(biāo)明一個(gè)成員函數(shù)可能拋出的各種"異常"。 Finally 為確保一段代碼不管發(fā)生什么"異常"都被執(zhí)行一段代碼。 可以在一個(gè)成員函數(shù)調(diào)用的外面寫(xiě)一個(gè) try 語(yǔ)句,在這個(gè)成員函數(shù)內(nèi)部寫(xiě)另一個(gè) try 語(yǔ)句保

30、護(hù)其他代碼。每當(dāng)遇到一個(gè) try 語(yǔ)句,"異常"的框架就放到堆棧上面,直到所有的 try 語(yǔ)句都 完成。如果下一級(jí)的 try 語(yǔ)句沒(méi)有對(duì)某種"異常"進(jìn)行處理,堆棧就會(huì)展開(kāi),直到遇到有處理 這種"異常"的 try 語(yǔ)句。 48、一個(gè)".java"源文件中是否可以包括多個(gè)類(lèi)(不是內(nèi)部類(lèi))?有什么限制? 答:可以。必須只有一個(gè)類(lèi)名與文件名相同。 49、 java 中有幾種類(lèi)型的流?JDK 為每種類(lèi)型的流提供了一些抽象類(lèi)以供繼承, 請(qǐng)說(shuō)出他們 分別是哪些類(lèi)? 答 : 字 節(jié) 流 , 字 符 流 。 字 節(jié) 流 繼 承 于

31、InputStream OutputStream , 字 符 流 繼 承 于 InputStreamReader OutputStreamWriter。在 java.io 包中還有許多其他的流,主要是為了提高 性能和使用方便。 50、java 中會(huì)存在內(nèi)存泄漏嗎,請(qǐng)簡(jiǎn)單描述。 答:會(huì)。自己實(shí)現(xiàn)堆載的數(shù)據(jù)結(jié)構(gòu)時(shí)有可能會(huì)出現(xiàn)內(nèi)存泄露,可參看 effective java. 51、java 中實(shí)現(xiàn)多態(tài)的機(jī)制是什么? 答:方法的重寫(xiě) Overriding 和重載 Overloading 是 Java 多態(tài)性的不同表現(xiàn)。重寫(xiě) Overriding 是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現(xiàn),重載 Overloading 是一個(gè)類(lèi)中多態(tài)性的一種表現(xiàn)。 52、 垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內(nèi)存嗎?有什么辦法主動(dòng)通知 虛擬機(jī)進(jìn)行垃圾回收 答:對(duì)于 GC 來(lái)說(shuō),當(dāng)程序員創(chuàng)建對(duì)象時(shí),GC 就開(kāi)始監(jiān)控這個(gè)對(duì)象的地址、大小以及使用 情況。通常,GC 采用有向圖的方式記錄和管理堆(heap中的所有對(duì)象。通過(guò)這種方式確定 哪些對(duì)象是"可達(dá)的",哪些對(duì)象是"不可達(dá)的"。當(dāng)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論