一、基本資料型別和封裝類別有什麼區別
(更多面試題推薦:java面試題)
原始型別是類,引用型別是物件。
原始型別大小比較用"==",引用型別大小比較用"equals"。
引用型別可以被序列化,原始型別不行。
在集合類別中只能使用引用類型,不能使用原始類型。
基本資料型別不用new,封裝類別需要new。
基本資料參數傳遞是以值傳遞,封裝類型是以位址傳遞的。
二、String、StringBuffer、StringBuilder三者之間的差異
String是字串常數,StringBuffer、StringBuilder是字串變數。
String所建立的字元內容不可變(String底層char陣列是final的),StringBuffer、StringBuilder的字元內容是可加長的。
StringBuffer是線程安全的,StringBuilder線程不安全的,但是速度快(因為它不會為線程安全消耗效能)。
三、String為什麼不可變?
雖然String、StringBuffer和StringBuilder都是final類,它們產生的物件都是不可變的,而且它們內部也都是靠char數組實現的。
但是不同之處在於,String類別中定義的char陣列是final的,而StringBuffer和StringBuilder都是繼承自AbstractStringBuilder類,它們的內部實作都是靠這個父類別完成的,而這個父類別中定義的char數組只是一個普通是私有變量,可以用append追加。
(相關教學推薦:java入門教學)
因為AbstractStringBuilder實作了Appendable介面。
四、運行時異常和非運行時異常的區別
#運行時異常是運行時錯誤:例如ClassCastException(類別轉換異常)、IndexOutOfBoundsException(數組越界)、NullPointerException(空指標)、ArrayStoreException(資料儲存異常,操作數組時類型不一致)、IO操作的BufferOverflowException異常。
(影片教學建議:java影片教學)
非執行階段異常是還未執行可見的錯誤,可以用try、catch捕捉異常。
五、簡述一下物件導向的特徵,並舉例說明你對物件導向的理解
物件導向的特徵歸結為封裝繼承多型,把現實世界的事物的屬性、行為特徵抽像出來放到一個容器裡(類),例如人類,人的走、聽、吃、說等動作可以歸結為類裡的方法,但又是人類的共同點,人有身高、體重歸結為類別裡的屬性。
封裝:就是設計者把不願意透露給使用者的那部分程式碼就是封裝過的,透過修飾字private(權限最小)、public(權限最大)、protected、default(屬性前預設為該類型),這些才能起到限制類別物件權限的作用。
繼承:子類別繼承父類別的過程,繼承者可以擁有父類別全部方法屬性。好處是提高程式碼重複使用性,子類別只需要寫特有的功能或欄位可以把公共的程式碼抽出到父類別裡面。
多態:透過父類別統一子類別方法屬性,然後透過調用,可以任意使用子類別方法,最佳化程式碼量,原理是子類別對父類別方法進行重寫。
以上是多年開發經驗總結的Java面試問題-(一)的詳細內容。更多資訊請關注PHP中文網其他相關文章!