Java面試題彙總(持續更新)
阿新 • • 發佈:2020-07-17
1. ==和equals的區別
答:
- 基礎資料型別比較:只能使用==,比較值是否相等
- 引用資料型別比較:
- 沒有重寫equals方法:==和equals沒有區別,比較的都是引用是否指向了同一塊記憶體
- 重寫了equals方法:equals比較的是引用的物件內容是否相等(在javaBean規定中當重寫equals時必須重寫hashCode,兩個物件的equals相等,hashCode也必須相等,如果不相等就會造成相同的物件在HashSet儲存中儲存兩次)
2. 堆與棧的區別
答:1. 棧記憶體儲存的是區域性變數,而堆記憶體儲存的是實體
2. 棧記憶體的更新速度要快於堆記憶體,因為區域性變數的生命週期很短
3. 棧記憶體存放的變數生命週期一旦結束就會被釋放,而堆記憶體存放的實體會被垃圾回收機制不定時回收