【學習筆記】JavaSE基礎知識整理

面向對象的三大特性(詳解

  • 封裝(對象的封裝和權限的封裝)
  • 繼承
  • 多態(補充:向上轉型、向下轉型)

基本數據類型與常量池(詳解

  • 基本數據類型的大小
  • 自動裝箱、自動拆箱、基本數據類型的常量池、Integer.valueOf()
  • 基本數據類型和包裝類型在JVM中的存儲位置
  • String類的intern()

String類及其源碼(詳解

  • String的拼接和對比(地址和值)
  • String類的intern()
  • String類的equals()
  • StringBuilder和StringBuffer(父類、底層的存儲、相關方法及其安全性、擴容)
  • String爲何不可變?好處?

final關鍵字(詳解

  • 修飾類、方法、變量

抽象類和接口(詳解

  • 事物、動做
  • 類、變量、方法的修飾符
  • 證實抽象類能夠被實例化
  • JDK1.8中的接口變化

代碼塊及其執行順序(詳解

  • 局部代碼塊、構造代碼塊、靜態代碼塊

內部類(詳解

  • 外部類、內部類
  • Java中類的加載過程(詳解
  • 成員內部類、局部內部類、靜態內部類、匿名內部類

Java的類和包(詳解

  • .java文件
  • main方法
  • 外部類的訪問權限
  • Java包的命名規則
  • import

模塊間的調用淺析(詳解

Java中的異常(詳解

  • 異常類的繼承關係、根據編譯把異常分類
  • 異常的兩種處理方式
  • 異常調用鏈、異常鏈化
  • 自定義異常及其構造函數
  • 異常的注意事項:子類重寫父類的throws方法、異常是線程獨立的
  • finally中的return(覆蓋try/catch中的return)、finally中的異常(覆蓋try/catch中的throw exception)

Java泛型詳解(詳解

  • 泛型概念、特色
  • 泛型的三種使用方式
  • 泛型通配符
  • 泛型方法的聲明
  • 泛型方法與可變參數
  • 靜態方法能夠使用泛型
  • 指定泛型上下邊界(?extends、super)
  • 定義泛型數組

Class類和Object類(詳解

  • Class類的概念、做用
  • 得到Class類對象的三種方式
  • Object類中的方法:clone()、getClass()、equals()、hashCode()、wait()、notify()、notifyAll()
  • clone()、淺拷貝-cloneable接口、深拷貝-重寫clone()
  • wait()、notify()的做用

反射詳解(詳解

  • 反射的概念、最重要的用途
  • 反射的基礎:Class類
  • 判斷是否爲某個類的實例:instanceof關鍵字、Class類的isInstance()方法
  • 用Class對象建立對象:直接newInstance()、Constructor對象->newInstance()
  • 用Class對象獲取類的方法集合:getDeclaredMethods(),調用方法:method.invoke(實例對象,參數)
  • 用Class對象獲取類的構造器集合:getDeclaredConstructors()
  • 用Class對象獲取類的成員變量:getFiled()等
  • 利用反射建立數組:Array.newInstance(Class對象, length)

離開IDE,使用javac和java構建項目(詳解

Java枚舉類(詳解

  • 枚舉類的父類、適用場合
  • 枚舉類的使用:存放常量、switch、添加方法、使用接口組織枚舉類(分類)
  • 枚舉類的集合:EnumSet、EnumMap
  • ......

Java多線程基礎總結(詳解

  • 進程和線程的概念、五種狀態、建立線程的三種方式
  • Java線程內存模型:哪些私有、哪些共享
  • 線程的優先級:getPriority ()
  • 線程的控制方法:interrupt()、 isInterrupted()、join()
  • Thread類的靜態方法:Thread.currentThread()、Thread.interrupted()、Thread.sleep(long msecs)、Thread.yield()
  • 線程組的概念、getThreadGroup
  • 多線程的實現(代碼、線程池)
  • 線程的狀態轉換代碼

Java IO流總結(詳解

  • IO流有哪些數據源
  • IO流的分類:字符流(以字符數組讀寫)、字節流(以字節數組讀寫)
  • 字符流和字節流的類結構
  • 整合Reader和InputStream:new InputStreamReader(InputStream)(能夠指定讀取的編碼格式,解決亂碼問題)
  • 整合Writer和OutputStream:new OutputStreamWriter(OutputStream)(能夠指定讀取的編碼格式,解決亂碼問題)
  • IO管道:使用pipedInputStream和pipedOutputStream實現線程間的通訊(傳輸字節流)
  • 字符流和字節流讀入與寫出數組:CharArrayReader、ByteArrayInputStream

Java序列化與反序列化(詳解

  • 序列化、反序列化的概念
  • 類實現序列化須要實現Serializable接口(接口中是空的,但ObjectOutputStream類的writeObject()方法會斷定是不是Enum、Array、Serializable類型)
  • 序列化ID:private static final long serialVersionUID = 1L
  • 序列化沒法保存靜態變量
  • ArrayList實現了Serializable,重寫了read/writeObject()方法實現自定義序列化
  • 沒有重寫read/writeObject(),默認使用ObjectOutputStream和ObjectInputStream的方法對對象進行序列化及反序列化
  • 總結

Java集合框架梳理(詳解

  • 集合框架結構圖
  • List接口(有序重複,容許多個null):ArrayList(非線程安全的動態數組)、LinkedList(雙向鏈表、非線程安全、雙端隊列)、Vector(線程安全的動態數組、與ArrayList類似)、Stack(繼承了Vector)
  • Set接口(無序不重複,只容許一個null):EnumSet(枚舉專用)、HashSet(查詢速度最快的集合)、TreeSet
  • Map接口:HashMap(快速查詢)、HashTable(性能比HashMap低)、TreeMap(有序、紅黑樹實現)、Properties、EnumMap
  • 哈希表(定義)和哈希碼(定義)、哈希值(定義
  • Queue接口:分爲阻塞式隊列(主要有ArrayBlockQueue、PriorityBlockingQueue、LinkedBlockingQueue)、雙端隊列(主要有ArrayDeque、LinkedBlockingDeque、LinkedList)(補充
  • 全部集合類詳解:http://calvin1978.blogcn.com/articles/collection.html

Java8新特性(詳解菜鳥

  • Lanbda表達式:歸納地說,就是能夠將一個方法傳到接口中。(函數式接口就是隻有一個抽象方法的接口)
  • 接口的默認方法
  • ......

Java集合詳解1:ArrayList、Vector、Stack(詳解

  • ArrayList(實現的接口、操做、原理、安全......)
  • Vector
  • Stack

Java集合詳解2:LinkedList、Queue(詳解

  • LinkedList
  • Queue【Deque(ArrayDequ--數組實現的隊列)、AbstractQueue(PriorityQueue--數組實現的優先隊列)】

Java集合詳解3:Iterator、fail-fast機制、比較器(詳解

  • Iterator
  • fail-fast機制(快速失敗機制)的概念、產生緣由、用途、解決辦法    (改變Collection集合的結構是指添加刪除元素,不是修改元素值)
  • 集合排序:Comparable天然排序(注意重寫方法)和Comparator定製排序的使用。
  • ......

Java集合詳解4:HashMap、HashTable(詳解

  • HashMap(數據結構、put、key到哈希碼到哈希值的過程、length爲2的n次方(oldCap左移一位)、擴容使用for循環、)
  • HashTable(length爲2n+1)
  • HashMap和HashTable區別:父類、null、同步

Java集合詳解5:LinkedHashMap、LRU(詳解

  • LinkedHashMap:數據結構(在HashMap基礎上加入雙向鏈表、header和accessOrder屬性、entry添加了屬性、非同步、LRU算法)
  • HashMap無序,LinkedHashMap有兩種順序:插入順序(entry.next實現,false)和訪問順序(entry.before/after實現,true),經過accessOrder控制。
  • LRU算法基於LinkedHashMap的按訪問順序排序的特色、LRU算法的實現(繼承,重寫removeEldestEntry())
  • ......

Java集合詳解6:TreeMap、紅黑樹(詳解平衡二叉樹

  • 二叉樹、二叉查找樹(生成二叉查找樹時,爲了不失衡,就有了這些平衡二叉樹(AVL樹、紅黑樹...))、紅黑樹
  • TreeMap(特色、插入和旋轉操做、刪除和移除操做)(有序、非線程安全)
  • 太難了

Java集合詳解7:HashSet、LinkedHashSet、TreeSet(詳解

  • HashSet基於HashMap(用key保存元素)
  • LinkedHashSet基於LinkedHashMap,但只能維護插入排序(用key保存元素)
  • TreeSet基於TreeMap,非線程安全,(用key保存元素)(TreeSet中含有一個NavigableMap類型的成員變量m,而m其實是TreeMap的實例)

Java集合詳解8:細節精講(詳解

  • ArrayList的合理使用
  • 基本數據類型沒法泛型化、Arrays.asList(T ...a)
  • list.subList(),subMap()、subSet()
  • compareTo()、equals()、indexOf()、Collections.binarySearch()

Java集合詳解:總結(詳解

Java設計模式1:建立型模式(詳解補充

主要是對象的建立。html

  1. 簡單工廠模式(一個工廠類根據傳入的參數,動態地決定建立哪一個對象)
  2. 工廠模式(也叫工廠方法模式)(一個子工廠對應生產一類對象)
  3. 抽象工廠模式(一個子工廠裏生產的對象都是兼容的,這些對象組成新的對象)
  4. 單例模式:
    餓漢模式(一開始就建立對象)、
    懶漢模式(單線程,用到的時候才生產對象)、
    飽漢模式(又叫雙重檢查,用到的時候才生產對象,多線程)、
    靜態內部類(最經典)
  5. 建造者模式(建立對象的時候方便地設置屬性)
  6. 原型模式(用到對象的時候將原對象淺拷貝一份)

Java設計模式2:結構型模式(詳解補充

主要是對象的結構設計。java

  1. 代理模式【(動態代理,cglib代理)(將被代理對象加一層包裝)】(進行方法加強)
  2. 適配器模式:
    默認適配器模式【牛奶適配器實現咖啡接口,全部方法都重寫爲空方法,適配器子類就舒服了】;
    對象適配器模式【牛奶適配器繼承咖啡類,構造方法注入牛奶類對象,方法重寫,牛奶適配成咖啡】;
    類適配器模式【牛奶適配器繼承牛奶類,實現咖啡接口,方法重寫,牛奶適配器變成咖啡類】(進行對象間的適配)
  3. 橋樑模式【畫筆(接口)有多個顏色(實現類),圖形(接口)有多個形狀(實現類),畫出不一樣顏色的不一樣形狀,依靠橋樑(圖形裏注入畫筆對象,畫筆就是橋樑)】
  4. 裝飾器模式【飲料(抽象類)有紅茶(實現類)、綠茶、咖啡,調料(抽象類)有檸檬(裝飾器,實現類)、珍珠、芒果,調製不一樣口味的飲料】(加強類)、【JavaIO流的裝飾器,例如DataInputStream dataInputStream = new DataInputStream(new BufferedInputStream(new FileInputStream("")))】
  5. 外觀模式(也叫門面模式)【圖形有圓、矩形、正方形(含畫圖方法),常規寫法是先建立某種圖形再去調用圖形的畫圖方法。而外觀模式是,外觀類裏建立了對象圓、矩形、正方形,定義了各個圖形的畫圖方法,改進寫法是能夠使用外觀對象直接畫出各個圖形,而不須要畫哪一個圖去new哪一個對象】
  6. 組合模式【員工有姓名、電話等屬性,同時還有手下的員工集合,這些員工也有姓名電話下屬集合。每一個員工屬性都是相同的,員工集合用List<Employee>(這就是組合模式)表示】
  7. 享元模式(複用已經生成的對象)

Java設計模式3:行爲型模式(詳解補充

  • 策略模式【畫筆(接口)有不一樣的顏色(實現類),如今要使用不一樣顏色的畫筆去畫圖,定義一個策略類,注入畫筆對象,策略類的對象就能夠畫圖了。相似於橋樑模式】
  • 觀察者模式【觀察者對象在構造的時候注入主題對象,二者產生鏈接。實際開發中使用消息中間件來實現觀察者模式】
  • 責任鏈模式【定義一個鏈表,而後在經過任意一節點後,若是此節點有後繼節點,那麼傳遞下去,例如用戶參加活動得到獎品,須要先通過規則檢測:僅限新用戶參加、只能某個地區的用戶參加、人數上限等,這些規則就是鏈表的節點】
  • 模板方法模式【模板方法只負責定義第一步應該要作什麼,第二步應該作什麼,第三步應該作什麼,至於怎麼作,由子類來實現。】
  • 狀態模式

Java設計模式4:JDK中的設計模式(詳解

Java設計模式5:Spring涉及到的9種設計模式(詳解

Java設計模式:總結(詳解

相關文章
相關標籤/搜索