java基礎知識點

Java中類及方法的加載順序

  1. 父類的靜態字段->父類靜態代碼塊->子類靜態字段->子類靜態代碼塊-> 父類成員變量(非靜態字段)->父類非靜態代碼塊->父類構造器->子類成員變量->子類非靜態代碼塊->子類構造器

接口和抽象類的區別

  1. 能夠實現多個接口,但只能實現一個抽象類
  2. 接口中的變量是public static final類型的,而抽象類沒有限定
  3. 抽象類能夠編寫構造方法,接口不能編寫抽象方法
  4. 繼承抽象類不用繼承抽象類中的全部方法(但須要繼承全部的抽象方法),而實現接口時需實現全部的方法(除默認方法外的方法)
  5. 抽象類可有main方法,接口沒有
  6. 抽象類能夠有默認的方法實現

String 、StringBuffer和StringBuilder的區別

  1. String爲字符串常量,而StringBuilder和StringBuffer均爲字符串變量,即String對象一旦建立以後該對象是不可更改的,但後二者的對象是變量,是能夠更改的。
  2. 在線程安全上,StringBuilder是線程不安全的,而StringBuffer是線程安全
  3. 使用場景:
  • String:適用於少許的字符串操做的狀況
  • StringBuilder:適用於單線程下在字符緩衝區進行大量操做的狀況
  • StringBuffer:適用多線程下在字符緩衝區進行大量操做的狀況

String.valueOf和Integer.toString的區別

  1. toString方法需保證對象不爲空,不然會拋出空指針錯誤
  2. valueOf對空指針的狀況已經進行了處理,若是爲空的時候會變成「null」字符串

方法重載(overload)

  1. 方法名字相同,參數不同(參數類型不同,參數的個數同樣,個數相同但所對應的類型不相同)
  2. 方法參數列表同樣,方法返回值不同,不能構成方法重載,由於方法編譯器沒法區分這兩個方法(主要根據名字和參數列表區分) 例如 int max(int a,int b) void(int a , int b)不能構成
  3. 方法修飾符能夠不同

方法重寫(override)

  1. 方法名,參數列表,返回值類型都必須相同
  2. 訪問修飾符必須大於或等於被重寫的方法
  3. 重寫的方法中,不能拋出新的異常或者更大的異常
  4. 重寫方法只存在於具備繼承關係的子類中,父類中的private方法不會發生重寫
  5. 非靜態方法不能重寫成靜態方法

Linkedlist和Arraylist的區別(主要就區別Arraylist是底層實現是數組與鏈表之間的區別)

  1. ArrayList是實現了基於動態數組的數據結構,LinkedList基於鏈表的數據結構。
  2. 對於隨機訪問get和set,ArrayList以爲優於LinkedList,由於LinkedList要移動指針
  3. 對於新增和刪除操做add和remove,LinedList比較佔優點,由於ArrayList要移動數據
  4. 對於遍歷ArrayList適合使用fori循環進行遍歷(實現了RandomAccess標誌,空接口,只作標記使用),對於遍歷Linkedlist使用迭代器訪問比較合適。
相關文章
相關標籤/搜索