1有决、字符串的不變性
下圖展示了如下的代碼運(yùn)行過(guò)程:
String s = "abcd";s = s.concat("ef");
備注:
- String reference variable:字符串引用變量
- String object:字符串對(duì)象
2、equals() 和hashCode()的關(guān)系
哈希碼是設(shè)計(jì)用于提高性能的栋豫。equals()和hashCode()的關(guān)系是:
- 如果兩個(gè)對(duì)象相等缀程,那么它們一定有著相同的哈希碼
-
即使兩個(gè)對(duì)象有著相同的哈希碼容诬,但它們不一定相等
備注:
- Hash Function:哈希函數(shù)
- buckets:散列桶
3相速、Java異常類(lèi)的層次結(jié)構(gòu)
紅顏色標(biāo)注的方塊屬于編譯時(shí)異常,這類(lèi)異常必須通過(guò)在try-catch代碼塊里捕獲異掣匾保或者在方法中用thorws聲明拋出異常街氢。
4、集合類(lèi)的層次結(jié)構(gòu)
注意Collections和Collection的區(qū)別:
備注:
- Collection:是集合類(lèi)層次結(jié)構(gòu)的最頂層接口睦袖。
-
Collecitons:這個(gè)類(lèi)由操作集合對(duì)象的靜態(tài)方法和集合對(duì)象組成珊肃。
5、Java同步機(jī)制
Java同步機(jī)制可以用一棟大樓來(lái)比喻闡述:
備注:
- special room:專(zhuān)用房間
- wait room:等待室
- hallway:走廊
6馅笙、引用別名機(jī)制
引用別名機(jī)制是指多個(gè)引用可以定位到同一個(gè)能被更新的內(nèi)存地址,而這些引用變量可以是不同的類(lèi)型近范。
7、棧和堆
下圖展示了方法和對(duì)象在運(yùn)行時(shí)在內(nèi)存的存儲(chǔ)位置:
備注:
- Stack:棧
- Heap:堆
8延蟹、Java虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)域
下圖展示了java虛擬機(jī)運(yùn)行時(shí)總體的數(shù)據(jù)區(qū)域:
備注:
- Thread:線(xiàn)程
- PC Register:程序計(jì)數(shù)器
- JVM Stack:Java虛擬機(jī)棧
- Native Method Stack:本地方法棧
- Heap:堆
- Method Area:方法區(qū):
- Runtime Constant Pool:運(yùn)行時(shí)常量池