深刻JDK源碼,這裏總有你不知道的知識點!

Java的基礎知識有不少,可是我認爲最基礎的知識應該要屬jdk的基礎代碼,jdk的基礎代碼裏面,有分了不少基礎模塊,其中又屬jdk包下面的lang包最爲基礎。java

咱們下面將總結和分析一下lang包下面最爲基礎和經常使用的幾個部分。編程

1:經常使用的對象類型包數組

(1)其中最基礎的類爲Object,全部的對象都是繼承於這個類的。咱們知道全部的類若是沒有顯示的聲明繼承於哪一個類的話,默認都會繼承於Object類,這個類裏面也有不少咱們經常使用的方法的默認實現。編程語言

(2)而後就是字符串類了,咱們經常使用的有String、StringBuilder和StringBuffer三個和字符串相關的類,在jdk1.8裏面String類還增長了join靜態方法用來結合多個字符串函數

(3)最好還有8種基本元素的包裝類,裏面對於每種不一樣類型的基本進行了包裝,並提供了相應的操做方法。工具

2: 經常使用的異常類型包:學習

(1)異常所有繼承於Throwable類,Throwable類是全部異常的基礎類。ui

(2)Error類型是Throwable類的子類,這種異常表示的是通常是指與虛擬機相關的問題,如系統崩潰,虛擬機錯誤,內存空間不足,方法調用棧溢等操作系統

(3)Exception類型是Throwable類的子類,這種異常表示程序能夠處理、能夠恢復的異常,對於這種異常應該在代碼中進行處理,不該該被程序最終拋出。 Exception類又被分爲兩類,一類是須要檢查的異常,是被強制要在代碼中進行處理,另外一類是運行時異常,是在代碼運行的時候出錯時出現。線程

3: 經常使用的接口包

(1)Comparable接口表示用於能夠比較大小的類

(2)Runnable接口表示這個類是要被做爲一個線程執行

(3)AutoCloseable接口表示類擁有資源,在銷燬類的時候須要自動銷燬擁有的資源。

(4)Iterable接口表示這個類能夠執行foreach循環操做

4: 系統包

(1)System類,他裏面包含了幾個能夠用於得到系統相關的有用方法。最多見的有得到系統時間,得到系統屬性,得到系統0/1/2文件描述符,利用系統函數拷貝數組內容。

(2)Runtime類,他裏面能夠得到應用運行時的一些狀態(主要包括使用的內存和cpu個數)和在應用運行時執行一些操做(程序退出、執行gc、設置退出時的鉤子函數)。

(3)Thread類,他裏面包括了線程相關的操做,主要有線程屬性的設置(優先級、名稱、類別)和改變線程運行狀態(啓動、睡眠、中斷等)。

(4)ThreadLocal類主要是保存以線程級別的運行狀態的類。

5: 註解包

這個系列的提供了能夠用於自定義註解方法和一些經常使用的註解,其中最爲重要的就是FunctionalInterface註解,一個接口若是使用了這個註解,則表示了具備lambda特性的接口。

6: 反射包

這個系列使得咱們能夠經過反射的方式獲得對象的屬性或者經過反射的方式執行對象的方法。主要經常使用的有Field、Method、Construct、Paramter、Array、Proxy幾個類。

7: 其餘包

其餘類包括了一些不是太經常使用,可是在某些場景下特別有用的工具。

(1)Ref包提供了與 Java 垃圾回收器密切相關的引用類。這些引用類對象能夠指向其它對象,但它們不一樣於通常的引用,由於它們的存在並不防礙 Java 垃圾回收器對它們所指向的對象進行回收。其好處就在於使者能夠保持對使用對象的引用,同時 JVM 依然能夠在內存不夠用的時候對使用對象進行回收。

(2)Management包提供提供管理接口,用於監視和管理 Java 虛擬機以及 Java 虛擬機在其上運行的操做系統。最經常使用的有MemoryMXBean、MemoryPoolMXBean、RuntimeMXBean、ThreadMXBean四個得到不一樣類型數據的MXBean。

(3)Instrument包提供了提供容許 Java 編程語言代理檢測運行在 JVM 上的程序的服務,利用它提供的Instrumentation類和ClassFileTrasformation類,利用這兩個類加上-javaagent命令,能夠在程序運行以前,完成對字節碼的修改,利用這個方法能夠有效的對程序進行監控。

最後附上一個關於jdk裏面lang包裏面經常使用類和方法的思惟導圖:

若是你以爲咱們總結的知識能夠幫到你,能夠到加羣: 632109190一塊兒進行學習和討論。

相關文章
相關標籤/搜索