- 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棧,本地方法棧是自己特有的,神聖不可侵犯。堆,方法區,執行時常量是我們大中國??的,時刻幫你,給你和平,給你富有。