一、int與Integer的差異
#(相關教學建議:java面試題)
1、Integer是int的包裝類,int則是java的一種基本資料型別
2、Integer變數必須實例化後才能使用,而int變數則不需要
3 、Integer實際上是物件的引用,當new一個Integer時,實際上是產生一個指標指向此物件;而int則是直接儲存資料值
4、Integer的預設值是null,int的默認值是0
二、什麼是for each循環,它可以循環那些資料型別?
增強版的for循環,寫法更簡潔,更加不容易出錯(因為不用擔心數組越界),底層也是使用了迭代器獲取的,只不過獲取迭代器由jvm完成,不需要我們取得迭代器而已,所以在使用foreach循環變數元素的過程中不準使用集合物件對集合的元素個數進行修改。
寫入法:
for(String it : set){ System.out.println("集合的元素:" + it); }
缺點:
在對陣列索引進行運算或集合進行增刪操作時,可能會報錯。
(推薦學習:java入門程式)
三、重載與重寫有什麼不同?
1、方法重載
是讓類別以統一的方式處理不同類型資料的手段。多個同名函數同時存在,具有不同的參數數量/型別。重載Overloading是一個類別中多態性的一種表現。
Java的方法重載,就是在類別中可以創建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。
在呼叫方法時透過傳遞給它們的不同參數個數和參數類型來決定具體使用哪個方法, 這就是多態性。
重載的時候,方法名稱要一樣,但是參數型別和個數不一樣,回傳值型別可以相同也可以不相同。無法以返回值類型作為重載函數的區分標準。
2、方法重寫
參數清單必須完全與被重寫的方法相同,否則不能稱之為重寫而是重載。
傳回的類型必須一直與被重寫的方法的回傳類型相同,否則不能稱其為重寫而是重載。
存取修飾符的限制一定大於被重寫方法的存取修飾符(public>protected>default>private)
重寫方法一定不能拋出新的檢查異常或比被重寫方法申明更廣泛的檢查型異常。例如:父類別的一個方法申明了一個檢查異常IOException,在重寫這個方法是就不能拋出Exception,只能拋出IOException的子類異常,可以拋出非檢查異常。
注意:建構器不能被繼承,因此不能被重寫,但可以被重載。
四、介面與抽象類別的差別?
1、抽象類別和介面都不能直接實例化,如果要實例化,抽象類別變數必須指向實作所有抽象方法的子類對象,介面變數必須指向實作所有介面方法的類對象。
2、抽象類別要被子類別繼承,介面要被類別實作。
3、介面只能做方法申明,抽象類別中可以做方法申明,也可以做方法實作
4、介面裡定義的變數只能是公共的靜態的常數,抽象類別中的變數是普通變數。
5、抽象類別裡的抽象方法必須全部被子類別所實現,如果子類別不能全部實作父類別抽象方法,那麼該子類別只能是抽象類別。同樣,一個實作介面的時候,如不能全部實作介面方法,那麼該類別也只能為抽象類別。
6、抽象方法只能申明,不能實現,介面是設計的結果,抽象類別是重構的結果
7、抽象類別裡可以沒有抽象方法
#8、如果一個類別裡有抽象方法,那麼這個類別只能是抽象類別
9、抽象方法要被實現,所以不能是靜態的,也不能是私有的。
10、接口可繼承接口,並可多繼承接口,但類別只能單根繼承。
不允許類別多重繼承的主要原因是,如果A同時繼承B和C,而b和c同時有一個D方法,A如何決定該繼承那一個呢?
但介面不存在這樣的問題,介面全都是抽象方法繼承誰都無所謂,所以介面可以繼承多個介面。
(影片教學推薦:java影片教學)
五、final, finally, finalize 的差異
##final: java中的關鍵字,修飾符。 A)、如果一個類別被宣告為final,就表示它不能再衍生出新的子類,不能再被當作父類別繼承。因此,一個類別不能同時被宣告為abstract抽象類別的和final的類別。 B)、如果將變數或方法宣告為final,可以保證它們在使用中不會被改變。(1)被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。
(2)被声明final的方法只能使用,不能重载。
finally:java的一种异常处理机制。
finally是对Java异常处理模型的最佳补充。finally结构使代码总会执行,而不管无异常发生。使用finally可以维护对象的内部状态,并可以清理非内存资源。特别是在关闭数据库连接这方面,如果程序员把数据库连接的close()方法放到finally中,就会大大降低程序出错的几率。
finalize,它是一个方法,属于java.lang.Object类,它的定义如下:
protected void finalize()throws Throwable{}
众所周知,finalize()方法是GC(garbagecollector运行机制的一部分,在此我们只说说finalize()方法的作用是什么呢?
finalize()方法是在GC清理它所从属的对象时被调用的,如果执行它的过程中抛出了无法捕获的异常(uncaughtexception,GC将终止对改对象的清理,并且该异常会被忽略;直到下一次GC开始清理这个对象时,它的finalize()会被再次调用。
以上是java經典面試題集錦(二)的詳細內容。更多資訊請關注PHP中文網其他相關文章!