歡迎光臨
每天分享高質量文章

8 張圖,看你是否理解 Java

  • 1、字串不變性
  • 2、equals()方法、hashCode()方法的區別
  • 3、Java異常類的層次結構
  • 4、集合類的層次結構
  • 5、Java同步
  • 6、別名
  • 7、堆和棧
  • 8、Java虛擬機運行時資料區域

一圖勝千言,下麵圖解均來自Program Creek 網站的Java教程,目前它們擁有最多的票選。如果圖解沒有闡明問題,那麼你可以借助它的標題來一窺究竟。

1、字串不變性

堆中常量池決定(畢竟final型別,JVM還特別優化了String)

2、equals()方法、hashCode()方法的區別

HashCode被設計用來提高性能。equals()方法與hashCode()方法的區別在於:

如果兩個物件相等(equal),那麼他們一定有相同的哈希值。
如果兩個物件的哈希值相同,但他們未必相等(equal)。

如果hash相等,其實就是第三個桶的情況,兩個元素(一般情況下,用鏈表或者紅黑樹串起來)

3、Java異常類的層次結構

圖中紅色部分為受檢查異常。它們必須被捕獲,或者在函式中宣告為丟擲該異常。

4、集合類的層次結構

註意Collections和Collection的區別。(Collections包含有各種有關集合操作的靜態多型方法)

5、Java同步

Java同步機制可通過類比建築物來闡明。

不是人民幣玩家的(VIP),車還沒來就好好等著。

6、別名

這種情況經常出現在使用了的ViewHolder的ListView中

7、堆和棧

圖解表明瞭方法和物件在運行時記憶體中的位置。

理解這個可以明白淺拷貝和深拷貝的原理,物件在堆中(除了方法區,常量池外,另外一片可以抽象的說是執行緒專有的運行時資料區)

8、Java虛擬機運行時資料區域

圖解展示了整個虛擬機運行時資料區域的情況。

每個執行緒PC暫存器,JVM棧,本地方法棧是自己特有的,神聖不可侵犯。堆,方法區,運行時常量是我們大中國??的,時刻幫你,給你和平,給你富有。

赞(0)

分享創造快樂