第一章 java基礎 第一節 java基本數據類型 Java語言提供了八種基本類型。六種數字類型(四個整數型,兩個浮點型),一種字符類型,還有一種布爾型。 byte、short、int、long、float、doule、char、boolean; String 不是基本數據類型。 第二節 java訪問控制修飾符 Java 支持 4 種不同的訪問權限。 default (即默認,什麼也不寫): 在同一包內可見,不使用任何修飾符。使用對象:類、接口、變量、方法。 private : 在同一類內可見。使用對象:變量、方法。 注意:不能修飾類(外部類) public : 對所有類可見。使用對象:類、接口、變量、方法 protected : 對同一包內的類和所有子類可見。使用對象:變量、方法。 注意:不能修飾類(外部類)。 第三節 java面向對象(封裝、繼承、多態) 封裝:將內部實現方式進行隱藏,方便調用者使用,以及避免重複實現代碼。 繼承:子類可以繼承父類的方法,也可以重寫父類的方法。 多態:多態是基於繼承實現的。 第四節 Java 集合框架 ArrayList: 底層基於數組實現容量大小動態變化,允許 null 的存在。第一次add的時候容量會變成10;之後add會判斷容量,需要擴充的時候會新增一個數組,再將原來的數據複製進去,它類似的是LinkedList,和LinkedList相比,它的查找和訪問元素的速度較快,但新增,刪除的速度較慢。線程不安全。如果你需要線程安全就使用Vector。 HashMap:數據結構爲 數組+(鏈表或紅黑樹),它存儲的內容是鍵值對;允許使用null鍵和null值,因爲key不允許重複,因此只能有一個鍵爲null;HashMap是線程不安全的,無序;新增邏輯:第一步,計算出鍵的hashcode值,該值用來定位這個元素放在數組的位置。分爲兩種情況,數組索引的位置是空的,這種情況很簡單,直接將元素放進去就好了;第二種,不是空的,採用equals比較元素是否相同,如果相同直接覆蓋,如果不相同則在原元素下使用鏈表結構存儲該元素。因爲鏈表元素太多的時候會影響查找效率,所以當鏈表的元素個數達到8的時候就變成了紅黑樹;初始容量大小是創建時給數組分配的容量大小,默認值爲16,當存儲的元素個數大於數組容量數乘以加載因子得到的值時,數組就會擴容到原來的兩倍;加載因子默認0.75。HashMap不是線程安全的;多線程下重新調整HashMap大小的時候,存儲在鏈表中的元素的次序會反過來,如果條件競爭發生了,那麼就死循環了;不能在多線程下使用HashMap。 線程安全的Map:HashTable,方法都被synchronized關鍵字修飾,效率非常低;SynchronizedMap,把傳入進行的HashMap對象進行了包裝同步而已;ConcurrentHashMap - 推薦,設計爲非阻塞,在更新時會局部鎖住某部分數據;好處是在保證合理的同步前提下,效率很高;壞處是嚴格來說讀取操作不能保證反映最近的更新. 第五節 java基礎部分面試題 第二章 常用框架 第三章 數據庫 第四章 緩存 第五章 中間件 第六章 併發編程 第七章 各類問題以及解決方案