java基礎知識點
Java中類及方法的加載順序
- 父類的靜態字段->父類靜態代碼塊->子類靜態字段->子類靜態代碼塊-> 父類成員變量(非靜態字段)->父類非靜態代碼塊->父類構造器->子類成員變量->子類非靜態代碼塊->子類構造器
接口和抽象類的區別
- 能夠實現多個接口,但只能實現一個抽象類
- 接口中的變量是public static final類型的,而抽象類沒有限定
- 抽象類能夠編寫構造方法,接口不能編寫抽象方法
- 繼承抽象類不用繼承抽象類中的全部方法(但須要繼承全部的抽象方法),而實現接口時需實現全部的方法(除默認方法外的方法)
- 抽象類可有main方法,接口沒有
- 抽象類能夠有默認的方法實現
String 、StringBuffer和StringBuilder的區別
- String爲字符串常量,而StringBuilder和StringBuffer均爲字符串變量,即String對象一旦建立以後該對象是不可更改的,但後二者的對象是變量,是能夠更改的。
- 在線程安全上,StringBuilder是線程不安全的,而StringBuffer是線程安全的
- 使用場景:
- String:適用於少許的字符串操做的狀況
- StringBuilder:適用於單線程下在字符緩衝區進行大量操做的狀況
- StringBuffer:適用多線程下在字符緩衝區進行大量操做的狀況
String.valueOf和Integer.toString的區別
- toString方法需保證對象不爲空,不然會拋出空指針錯誤
- valueOf對空指針的狀況已經進行了處理,若是爲空的時候會變成「null」字符串
方法重載(overload)
- 方法名字相同,參數不同(參數類型不同,參數的個數同樣,個數相同但所對應的類型不相同)
- 方法參數列表同樣,方法返回值不同,不能構成方法重載,由於方法編譯器沒法區分這兩個方法(主要根據名字和參數列表區分) 例如 int max(int a,int b) void(int a , int b)不能構成
- 方法修飾符能夠不同
方法重寫(override)
- 方法名,參數列表,返回值類型都必須相同
- 訪問修飾符必須大於或等於被重寫的方法
- 重寫的方法中,不能拋出新的異常或者更大的異常
- 重寫方法只存在於具備繼承關係的子類中,父類中的private方法不會發生重寫
- 非靜態方法不能重寫成靜態方法
Linkedlist和Arraylist的區別(主要就區別Arraylist是底層實現是數組與鏈表之間的區別)
- ArrayList是實現了基於動態數組的數據結構,LinkedList基於鏈表的數據結構。
- 對於隨機訪問get和set,ArrayList以爲優於LinkedList,由於LinkedList要移動指針
- 對於新增和刪除操做add和remove,LinedList比較佔優點,由於ArrayList要移動數據
- 對於遍歷ArrayList適合使用fori循環進行遍歷(實現了RandomAccess標誌,空接口,只作標記使用),對於遍歷Linkedlist使用迭代器訪問比較合適。
歡迎關注本站公眾號,獲取更多信息