圖說 Java:理解 Java 機制最受歡迎的 8 幅圖
世間總是一圖勝過千萬言,下面的8幅圖來自于 Program Creek 的 Java教程 ,目前這是該網站最受歡迎的文章.
希望本文能幫你回顧你已經知道的那些知識。如果圖片講解的不夠清晰,你可能需要閱讀詳細的文章或者進行搜索。
1. 字符串的不可變性(String Immutability)
String s = "abcd"; s = s.concat("ef");下圖顯示了如下代碼運行的過程:
中文參考:Java String 詳解
2. equals() 與 hashCode() 方法的關系
設計 HashCode(哈希編碼,散列碼) 是為了提高性能.equals()與hashCode()方法之間的關系可以概括為:
2.1 如果兩個對象相等(equal),那么必定擁有相同的哈希碼(hash code)
2.2 即使兩個對象有相同的哈希值(hash code), 但他們不一定相等.
中文參考: HashMap的實現原理

3. Java 異常類層次結構
粉紅色的是會被檢查的異常(checked exceptions),其必須被 try{}catch語句塊所捕獲,或者在方法簽名里通過throws子句聲明.另一類異常是運行時異常(runtime exceptions),需要程序員自己分析代碼決定是否捕獲和處理。
而聲明為Error的,則屬于嚴重錯誤,需要根據業務信息進行特殊處理,Error不需要捕捉。
中文示例: Exception

4. 集合類層次結構
注意Collections(工具類) 和 Collection(集合頂層接口) 的區別:中文參考: Collections

5. Java同步
Java同步(synchronization)機制可以用一座大樓來比喻:中文參考: 線程同步---synchronized

6.對象皆指針(Aliasing,別名)
別名是指多個引用指向同一個內存地址(對象實際地址,可以理解為這就是對象),甚至這些引用的類型完全不一樣.
7. 堆(Heap)和棧(Stack)
下圖顯示了運行時內存中方法和對象所處的位置絕大多數情況下:對象(及其屬性域)都保存在堆里面,而方法的參數,局部變量(引用,以及6種基本類型)保存在棧里面.
當然,極特殊的情況下(極度優化[對象入棧],常量池[String],靜態變量[方法區]等)也會打破這個潛規則。

8. JVM運行時數據區域劃分
下圖顯示了JVM(Java虛擬機)運行時總體的數據區域劃分
翻譯:http://blog.csdn.net/renfufei/article/details/13594715
原文:http://www.programcreek.com/2013/09/top-8-diagrams-for-understanding-java/
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!