天天看點

圖說 Java:了解 Java 機制最受歡迎的 8 幅圖

世間總是一圖勝過千萬言,下面的8幅圖來自于 Program Creek 的 Java教程 ,目前這是該網站最受歡迎的文章.

希望本文能幫你回顧你已經知道的那些知識。如果圖檔講解的不夠清晰,你可能需要閱讀詳細的文章或者進行搜尋。

1. 字元串的不可變性(String Immutability)

String s = "abcd";  
s = s.concat("ef");
           

下圖顯示了如下代碼運作的過程: 

中文參考:Java String 詳解 

圖說 Java:了解 Java 機制最受歡迎的 8 幅圖

2. equals() 與 hashCode() 方法的關系

設計 HashCode(哈希編碼,散列碼) 是為了提高性能.  

equals()與hashCode()方法之間的關系可以概括為: 

2.1 如果兩個對象相等(equal),那麼必定擁有相同的哈希碼(hash code) 

2.2 即使兩個對象有相同的哈希值(hash code), 但他們不一定相等. 

中文參考:  HashMap的實作原理 

圖說 Java:了解 Java 機制最受歡迎的 8 幅圖

3. Java 異常類層次結構

粉紅色的是會被檢查的異常(checked exceptions),其必須被 try{}catch語句塊所捕獲,或者在方法簽名裡通過throws子句聲明. 

另一類異常是運作時異常(runtime exceptions),需要程式員自己分析代碼決定是否捕獲和處理。 

而聲明為Error的,則屬于嚴重錯誤,需要根據業務資訊進行特殊處理,Error不需要捕捉。 

中文示例:  Exception 

圖說 Java:了解 Java 機制最受歡迎的 8 幅圖

4. 集合類層次結構

注意Collections(工具類) 和 Collection(集合頂層接口) 的差別: 

中文參考:  Collections 

圖說 Java:了解 Java 機制最受歡迎的 8 幅圖
圖說 Java:了解 Java 機制最受歡迎的 8 幅圖

5. Java同步

Java同步(synchronization)機制可以用一座大樓來比喻: 

中文參考:  線程同步---synchronized 

圖說 Java:了解 Java 機制最受歡迎的 8 幅圖

6.對象皆指針(Aliasing,别名)

别名是指多個引用指向同一個記憶體位址(對象實際位址,可以了解為這就是對象),甚至這些引用的類型完全不一樣. 

圖說 Java:了解 Java 機制最受歡迎的 8 幅圖

7. 堆(Heap)和棧(Stack)

下圖顯示了運作時記憶體中方法和對象所處的位置 

絕大多數情況下:對象(及其屬性域)都儲存在堆裡面,而方法的參數,局部變量(引用,以及6種基本類型)儲存在棧裡面. 

當然,極特殊的情況下(極度優化[對象入棧],常量池[String],靜态變量[方法區]等)也會打破這個潛規則。 

圖說 Java:了解 Java 機制最受歡迎的 8 幅圖

8. JVM運作時資料區域劃分

下圖顯示了JVM(Java虛拟機)運作時總體的資料區域劃分 

圖說 Java:了解 Java 機制最受歡迎的 8 幅圖

翻譯:http://blog.csdn.net/renfufei/article/details/13594715

原文:http://www.programcreek.com/2013/09/top-8-diagrams-for-understanding-java/

Related posts:

  1. Java hashCode() and equals() Contract for the contains(Object o) Method of Set
  2. Java equals() and hashCode() Contract
  3. How does Java handle aliasing?
  4. HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap

版權聲明:本文為CSDN部落客「weixin_34334744」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_34334744/article/details/92512040