Object要點記錄
Object是所有有層級的類的根,這裡要說明一下基本資料型別和Object是沒有關係的(基本資料型別包括:byte 、int、short、long、double、float、boolean、char)
類的結構如下
因為java是在作業系統上進行,其本質是對作業系統的操做,其底層的實現程式碼主要還是C/C++,所以其原始碼中呼叫的大量的本地函式,接下來對各個函式進行重點解析。
- registerNatives
private static native void registerNatives();
為了讓JVM找到您的本機函式,必須以某種方式命名它們。例如,對於
java.lang.Object.registerNatives
,相應的C函式命名為
Java_java_lang_Object_registerNatives
在Object 類中使用靜態程式碼塊,在類載入的初始化時呼叫registerNatives方法完成對本地方法的註冊。
注:靜態程式碼塊呼叫可以參考
類載入時機可以參考
static {
registerNatives();
}
2.hashCode
物件的判斷==是判斷物件記憶體地址是否相等
Object 中equals方法也是如此, String中重寫了equals方法所以實現了字串的值判斷。
hashcode的好處是在hashmap中可以實現對儲存物件的快速查詢。
3. clone
返回物件的副本
表示式 | 結果 |
---|---|
x.clone() != x | true |
x.clone().getClass() == x.getClass() | true |
x.clone().equals(x) | true |
延伸一下:建立物件的方式
- 常見的new
- 通過反射 例子:Class.forName(XXX.class).newInstance();
- clone
- 反序列化
4.wait、notify、notifyAll
wait:會引起當前執行緒阻塞
notify:隨機喚醒當前類監視器下的一個單執行緒
notifyAll :喚醒當前監視器下的所有等待執行緒
wait、notify和notifyAll
只能由作為該物件的監視器的所有者的執行緒呼叫。執行緒可以通過以下三種方式之一成為物件監視器的所有者:
- 通過執行該物件的同步例項方法即由synchronize。
- 通過執行在物件上同步的 Synchronized語句的主體。
- 對於型別為class的物件,請執行該類的同步靜態方法。
wait狀態的執行緒喚醒的四種情況:
- notify隨機喚醒
- notifyAll全部喚醒
- Interrupt
- 設定的等待時間已滿足
被喚醒的執行緒平等的競爭該物件的鎖。
sleep和wait雖然執行緒同樣是阻塞其最大的區別在於wait會釋放物件鎖而sleep不會釋放。
5.finalize
在物件gc回收前呼叫執行。詳細參考
相關文章
- 【演算法】HashMap相關要點記錄演算法HashMap
- object checkpoint物件檢查點小記Object物件
- 知識點記錄
- 前端點滴記錄前端
- Object TreeView簡要說明 (轉)ObjectView
- iOSARC記憶體管理要點iOS記憶體
- 站點優化記錄優化
- Mac | 技巧點滴記錄Mac
- 技術點滴記錄
- Vue中的點點滴滴在此記錄Vue
- 軟體測試相關簡要記錄
- Machine Learning Yearning 要點筆記Mac筆記
- ROS機器人開發實踐1->SSH遠端登入要點記錄ROS機器人
- 記錄的小知識點
- PHP日常注意點-記錄1PHP
- 學習記錄 -- 知識點
- golang小知識點記錄Golang
- Object-C,遍歷目錄Object
- Flutter個人小知識點記錄Flutter
- OWASP Top 10關鍵點記錄
- 大型專案部署注意點記錄
- python知識點記錄_01Python
- python知識點記錄_03Python
- LTE-5G學習筆記1---記憶要點筆記
- 記錄 libldap-2.4.so.2: cannot open shared object file: No such file or directoryLDAObject
- 記錄一段 Object wait()、notifyAll() 方法不當使用的經歷ObjectAI
- vuex狀態管理知識點記錄Vue
- oracle awr快照點不記錄問題Oracle
- phppatch記錄requesturl(專案故障點定位)PHP
- R學習-知識點記錄(Temp)
- mysql寫function時的注意點記錄MySqlFunction
- 5.23 電網初始記錄難點
- Object.assign()的痛點Object
- iOS開發ARC記憶體管理技術要點iOS記憶體
- Excel 美化要點Excel
- 賽題要點
- 副本集要點
- 記錄疫情下PHP中高階面試重點PHP面試