一、int和integer的區(qū)別
(相關教程推薦:java面試題)
1、Integer是int的包裝類,int則是java的一種基本數(shù)據(jù)類型?
2、Integer變量必須實例化后才能使用,而int變量不需要?
3、Integer實際是對象的引用,當new一個Integer時,實際上是生成一個指針指向此對象;而int則是直接存儲數(shù)據(jù)值?
立即學習“Java免費學習筆記(深入)”;
4、Integer的默認值是null,int的默認值是0
二、什么是for each循環(huán),它可以循環(huán)那些數(shù)據(jù)類型?
增強版的for循環(huán),寫法更簡潔,更加不容易出錯(因為不用擔心數(shù)組越界),底層也是使用了迭代器獲取的,只不過獲取迭代器由jvm完成,不需要我們獲取迭代器而已,所以在使用foreach循環(huán)變量元素的過程中不準使用集合對象對集合的元素個數(shù)進行修改。
寫法:
for(String it : set){ System.out.println("集合的元素:" + it); }
缺點:
在對數(shù)組索引進行操作或者集合進行增刪操作時,可能會報錯。
(推薦學習:java入門程序)
三、重載與重寫有什么區(qū)別?
1、方法重載
是讓類以統(tǒng)一的方式處理不同類型數(shù)據(jù)的一種手段。多個同名函數(shù)同時存在,具有不同的參數(shù)個數(shù)/類型。重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。
Java的方法重載,就是在類中可以創(chuàng)建多個方法,它們具有相同的名字,但具有不同的參數(shù)和不同的定義。
調(diào)用方法時通過傳遞給它們的不同參數(shù)個數(shù)和參數(shù)類型來決定具體使用哪個方法, 這就是多態(tài)性。
重載的時候,方法名要一樣,但是參數(shù)類型和個數(shù)不一樣,返回值類型可以相同也可以不相同。無法以返回值類型作為重載函數(shù)的區(qū)分標準。
2、方法重寫
參數(shù)列表必須完全與被重寫的方法相同,否則不能稱其為重寫而是重載。
返回的類型必須一直與被重寫的方法的返回類型相同,否則不能稱其為重寫而是重載。
訪問修飾符的限制一定要大于被重寫方法的訪問修飾符(public>protected>default>private)
重寫方法一定不能拋出新的檢查異?;蛘弑缺恢貙懛椒ㄉ昝鞲訉挿旱臋z查型異常。例如:父類的一個方法申明了一個檢查異常IOException,在重寫這個方法是就不能拋出Exception,只能拋出IOException的子類異常,可以拋出非檢查異常。
注意:構(gòu)造器不能被繼承,因此不能被重寫,但可以被重載。
四、接口與抽象類的區(qū)別?
1、抽象類和接口都不能直接實例化,如果要實例化,抽象類變量必須指向?qū)崿F(xiàn)所有抽象方法的子類對象,接口變量必須指向?qū)崿F(xiàn)所有接口方法的類對象。
2、抽象類要被子類繼承,接口要被類實現(xiàn)。
3、接口只能做方法申明,抽象類中可以做方法申明,也可以做方法實現(xiàn)
4、接口里定義的變量只能是公共的靜態(tài)的常量,抽象類中的變量是普通變量。
5、抽象類里的抽象方法必須全部被子類所實現(xiàn),如果子類不能全部實現(xiàn)父類抽象方法,那么該子類只能是抽象類。同樣,一個實現(xiàn)接口的時候,如不能全部實現(xiàn)接口方法,那么該類也只能為抽象類。
6、抽象方法只能申明,不能實現(xiàn),接口是設計的結(jié)果 ,抽象類是重構(gòu)的結(jié)果
7、抽象類里可以沒有抽象方法
8、如果一個類里有抽象方法,那么這個類只能是抽象類
9、抽象方法要被實現(xiàn),所以不能是靜態(tài)的,也不能是私有的。
10、接口可繼承接口,并可多繼承接口,但類只能單根繼承。
不允許類多重繼承的主要原因是,如果A同時繼承B和C,而b和c同時有一個D方法,A如何決定該繼承那一個呢?
但接口不存在這樣的問題,接口全都是抽象方法繼承誰都無所謂,所以接口可以繼承多個接口。
(視頻教程推薦:java視頻教程)
五、final, finally, finalize 的區(qū)別
final:java中的關鍵字,修飾符。
A)、如果一個類被聲明為final,就意味著它不能再派生出新的子類,不能作為父類被繼承。因此,一個類不能同時被聲明為abstract抽象類的和final的類。
B)、如果將變量或者方法聲明為final,可以保證它們在使用中不被改變。
(1)被聲明為final的變量必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改。
(2)被聲明final的方法只能使用,不能重載。
finally:java的一種異常處理機制。
finally是對Java異常處理模型的最佳補充。finally結(jié)構(gòu)使代碼總會執(zhí)行,而不管無異常發(fā)生。使用finally可以維護對象的內(nèi)部狀態(tài),并可以清理非內(nèi)存資源。特別是在關閉數(shù)據(jù)庫連接這方面,如果程序員把數(shù)據(jù)庫連接的close()方法放到finally中,就會大大降低程序出錯的幾率。
finalize,它是一個方法,屬于java.lang.Object類,它的定義如下:
protected void finalize()throws Throwable{}
眾所周知,finalize()方法是GC(garbagecollector運行機制的一部分,在此我們只說說finalize()方法的作用是什么呢?
finalize()方法是在GC清理它所從屬的對象時被調(diào)用的,如果執(zhí)行它的過程中拋出了無法捕獲的異常(uncaughtexception,GC將終止對改對象的清理,并且該異常會被忽略;直到下一次GC開始清理這個對象時,它的finalize()會被再次調(diào)用。
以上就是java經(jīng)典面試題集錦(二)的詳細內(nèi)容,更多請關注php中文網(wǎng)其它相關文章!
java怎么學習?java怎么入門?java在哪學?java怎么學才快?不用擔心,這里為大家提供了java速學教程(入門到精通),有需要的小伙伴保存下載就能學習啦!
Copyright 2014-2025 http://www.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號