欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          java經(jīng)典面試題集錦(二)

          java經(jīng)典面試題集錦(二)

          一、int和Integer的區(qū)別

          (相關(guān)教程推薦:java面試題)

          1、Integer是int的包裝類,int則是java的一種基本數(shù)據(jù)類型

          2、Integer變量必須實(shí)例化后才能使用,而int變量不需要

          3、Integer實(shí)際是對(duì)象的引用,當(dāng)new一個(gè)Integer時(shí),實(shí)際上是生成一個(gè)指針指向此對(duì)象;而int則是直接存儲(chǔ)數(shù)據(jù)值

          4、Integer的默認(rèn)值是null,int的默認(rèn)值是0

          二、什么是for each循環(huán),它可以循環(huán)那些數(shù)據(jù)類型?

          增強(qiáng)版的for循環(huán),寫法更簡(jiǎn)潔,更加不容易出錯(cuò)(因?yàn)椴挥脫?dān)心數(shù)組越界),底層也是使用了迭代器獲取的,只不過獲取迭代器由jvm完成,不需要我們獲取迭代器而已,所以在使用foreach循環(huán)變量元素的過程中不準(zhǔn)使用集合對(duì)象對(duì)集合的元素個(gè)數(shù)進(jìn)行修改。

          寫法:

          for(String it : set){     System.out.println("集合的元素:" + it); }

          缺點(diǎn):

          在對(duì)數(shù)組索引進(jìn)行操作或者集合進(jìn)行增刪操作時(shí),可能會(huì)報(bào)錯(cuò)。

          (推薦學(xué)習(xí):java入門程序)

          三、重載與重寫有什么區(qū)別?

          1、方法重載

          是讓類以統(tǒng)一的方式處理不同類型數(shù)據(jù)的一種手段。多個(gè)同名函數(shù)同時(shí)存在,具有不同的參數(shù)個(gè)數(shù)/類型。重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)。

          Java的方法重載,就是在類中可以創(chuàng)建多個(gè)方法,它們具有相同的名字,但具有不同的參數(shù)和不同的定義。

          調(diào)用方法時(shí)通過傳遞給它們的不同參數(shù)個(gè)數(shù)和參數(shù)類型來決定具體使用哪個(gè)方法, 這就是多態(tài)性。

          重載的時(shí)候,方法名要一樣,但是參數(shù)類型和個(gè)數(shù)不一樣,返回值類型可以相同也可以不相同。無法以返回值類型作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)。

          2、方法重寫

          參數(shù)列表必須完全與被重寫的方法相同,否則不能稱其為重寫而是重載。

          返回的類型必須一直與被重寫的方法的返回類型相同,否則不能稱其為重寫而是重載。

          訪問修飾符的限制一定要大于被重寫方法的訪問修飾符(public>protected>default>private)

          重寫方法一定不能拋出新的檢查異?;蛘弑缺恢貙懛椒ㄉ昝鞲訉挿旱臋z查型異常。例如:父類的一個(gè)方法申明了一個(gè)檢查異常IOException,在重寫這個(gè)方法是就不能拋出Exception,只能拋出IOException的子類異常,可以拋出非檢查異常。

          注意:構(gòu)造器不能被繼承,因此不能被重寫,但可以被重載。

          四、接口與抽象類的區(qū)別?

          1、抽象類和接口都不能直接實(shí)例化,如果要實(shí)例化,抽象類變量必須指向?qū)崿F(xiàn)所有抽象方法的子類對(duì)象,接口變量必須指向?qū)崿F(xiàn)所有接口方法的類對(duì)象。

          2、抽象類要被子類繼承,接口要被類實(shí)現(xiàn)。

          3、接口只能做方法申明,抽象類中可以做方法申明,也可以做方法實(shí)現(xiàn)

          4、接口里定義的變量只能是公共的靜態(tài)的常量,抽象類中的變量是普通變量。

          5、抽象類里的抽象方法必須全部被子類所實(shí)現(xiàn),如果子類不能全部實(shí)現(xiàn)父類抽象方法,那么該子類只能是抽象類。同樣,一個(gè)實(shí)現(xiàn)接口的時(shí)候,如不能全部實(shí)現(xiàn)接口方法,那么該類也只能為抽象類。

          6、抽象方法只能申明,不能實(shí)現(xiàn),接口是設(shè)計(jì)的結(jié)果 ,抽象類是重構(gòu)的結(jié)果

          7、抽象類里可以沒有抽象方法

          8、如果一個(gè)類里有抽象方法,那么這個(gè)類只能是抽象類

          9、抽象方法要被實(shí)現(xiàn),所以不能是靜態(tài)的,也不能是私有的。

          10、接口可繼承接口,并可多繼承接口,但類只能單根繼承。

          不允許類多重繼承的主要原因是,如果A同時(shí)繼承B和C,而b和c同時(shí)有一個(gè)D方法,A如何決定該繼承那一個(gè)呢?

          但接口不存在這樣的問題,接口全都是抽象方法繼承誰都無所謂,所以接口可以繼承多個(gè)接口。

          (視頻教程推薦:java視頻教程)

          五、final, finally, finalize 的區(qū)別

          final:java中的關(guān)鍵字,修飾符。

          A)、如果一個(gè)類被聲明為final,就意味著它不能再派生出新的子類,不能作為父類被繼承。因此,一個(gè)類不能同時(shí)被聲明為abstract抽象類的和final的類。

          B)、如果將變量或者方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖儭?/p>

          (1)被聲明為final的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。

          (2)被聲明final的方法只能使用,不能重載。

          finally:java的一種異常處理機(jī)制。

          finally是對(duì)Java異常處理模型的最佳補(bǔ)充。finally結(jié)構(gòu)使代碼總會(huì)執(zhí)行,而不管無異常發(fā)生。使用finally可以維護(hù)對(duì)象的內(nèi)部狀態(tài),并可以清理非內(nèi)存資源。特別是在關(guān)閉數(shù)據(jù)庫(kù)連接這方面,如果程序員把數(shù)據(jù)庫(kù)連接的close()方法放到finally中,就會(huì)大大降低程序出錯(cuò)的幾率。

          finalize,它是一個(gè)方法,屬于java.lang.Object類,它的定義如下:

          protected void finalize()throws Throwable{}

          眾所周知,finalize()方法是GC(garbagecollector運(yùn)行機(jī)制的一部分,在此我們只說說finalize()方法的作用是什么呢?

          finalize()方法是在GC清理它所從屬的對(duì)象時(shí)被調(diào)用的,如果執(zhí)行它的過程中拋出了無法捕獲的異常(uncaughtexception,GC將終止對(duì)改對(duì)象的清理,并且該異常會(huì)被忽略;直到下一次GC開始清理這個(gè)對(duì)象時(shí),它的finalize()會(huì)被再次調(diào)用。

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)