天天看點

J2SE内容出現在面試筆試中的總結一

   JAVA相關基礎知識

1、面向對象的特征有哪些方面 

1抽象:

抽象就是忽略一個主題中與目前目标無關的那些方面,以便更充分地注意與目前目标有關的方面。抽象并不打算了解全部問題,而隻是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是資料抽象。

2.繼承:

繼承是一種聯結類的層次模型,并且允許和鼓勵類的重用,它提供了一種明确表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那裡繼承方法和執行個體變量,并且類可以修改或增加新的方法使之更适合特殊的需要。

3.封裝:

封裝是把過程和資料包圍起來,對資料的通路隻能通過已定義的界面。面向對象計算始于這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口通路其他對象。

4. 多态性:

多态性是指允許不同類的對象對同一消息作出響應。多态性包括參數化多态性和包含多态性。多态性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程式函數同名問題。

2、String是最基本的資料類型嗎?

基本資料類型包括byte、int、char、long、float、double、boolean和short。

java.lang.String類是final類型的,是以不可以繼承這個類、不能修改這個類。為了提高效率節省空間,我們應該用StringBuffer類

3、int 和 Integer 有什麼差別

Java 提供兩種不同的類型:引用類型和原始類型(或内置類型)。Int是java的原始資料類型,Integer是java為int提供的封裝類。Java為每個原始類型提供了封裝類。

原始類型封裝類

booleanBoolean

charCharacter

byteByte

shortShort

intInteger

longLong

floatFloat

doubleDouble

引用類型和原始類型的行為完全不同,并且它們具有不同的語義。引用類型和原始類型具有不同的特征和用法,它們包括:大小和速度問題,這種類型以哪種類型的資料結構存儲,當引用類型和原始類型用作某個類的執行個體資料時所指定的預設值。對象引用執行個體變量的預設值為 null,而原始類型執行個體變量的預設值與它們的類型有關。

4、String 和StringBuffer的差別

JAVA平台提供了兩個類:String和StringBuffer,它們可以儲存和操作字元串,即包含多個字元的字元資料。這個String類提供了數值不可改變的字元串。而這個StringBuffer類提供的字元串進行修改。當你知道字元資料要改變的時候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來動态構造字元資料。

5、運作時異常與一般異常有何異同?

異常表示程式運作過程中可能出現的非正常狀态,運作時異常表示虛拟機的通常操作中可能遇到的異常,是一種常見運作錯誤。java編譯器要求方法必須聲明抛出可能發生的非運作時異常,但是并不要求必須聲明抛出未被捕獲的運作時異常。

6、說出ArrayList,Vector, LinkedList的存儲性能和特性

ArrayList和Vector都是使用數組方式存儲資料,此數組元素數大于實際存儲的資料以便增加和插入元素,它們都允許直接按序号索引元素,但是插入元素要涉及數組元素移動等記憶體操作,是以索引資料快而插入資料慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向連結清單實作存儲,按序号索引資料需要進行前向或後向周遊,但是插入資料時隻需要記錄本項的前後項即可,是以插入速度較快。

7、Collection 和 Collections的差別。 

  Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.

Collections是針對集合類的一個幫助類,他提供一系列靜态方法實作對各種集合的搜尋、排序、線程安全化等操作。

8、&和&&的差別。 

&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)。

9、HashMap和Hashtable的差別。

HashMap是Hashtable的輕量級實作(非線程安全的實作),他們都完成了Map接口,主要差別在于HashMap允許空(null)鍵值(key),由于非線程安全,效率上可能高于Hashtable。

HashMap允許将null作為一個entry的key或者value,而Hashtable不允許。

HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。 

Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實作。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程通路Hashtable時,不需要自己為它的方法實作同步,而HashMap 就必須為之提供外同步。 

Hashtable和HashMap采用的hash/rehash算法都大概一樣,是以性能不會有很大的差異。

10、final, finally, finalize的差別。 

  final 用于聲明屬性,方法和類,分别表示屬性不可變,方法不可覆寫,類不可繼承。

finally是異常處理語句結構的一部分,表示總是執行。

finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆寫此方法提供垃圾收集時的其他資源回收,例如關閉檔案等。

繼續閱讀