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
- 知識點記錄
- Torch功能點記錄
- Machine Learning Yearning 要點筆記Mac筆記
- 站點優化記錄優化
- Vue中的點點滴滴在此記錄Vue
- ROS機器人開發實踐1->SSH遠端登入要點記錄ROS機器人
- python知識點記錄_03Python
- python知識點記錄_01Python
- PHP日常注意點-記錄1PHP
- 記錄的小知識點
- 學習記錄 -- 知識點
- Object.assign()的痛點Object
- 5.23 電網初始記錄難點
- Flutter個人小知識點記錄Flutter
- 記錄 2020-11-18 23點
- OWASP Top 10關鍵點記錄
- LTE-5G學習筆記1---記憶要點筆記
- mysql寫function時的注意點記錄MySqlFunction
- oracle awr快照點不記錄問題Oracle
- 針對於debugger斷點的記錄斷點
- [系列文章] PHP日常注意點 - 記錄2PHP
- 關於 JMeter 5.4.1 的一點記錄JMeter
- vuex狀態管理知識點記錄Vue
- MIT6.0001 筆記,LECTURE 8:Object Oriented Programming (class,object,method)MIT筆記Object
- [1024]記錄我在南寧實習的點點滴滴
- 關於 sap.ui.base.Object 的簡要介紹UIObject
- 目標追蹤(Object Tracking)概念的簡要介紹Object
- JAVA集合類簡要筆記 - 內部類 包裝類 Object類 String類 BigDecimal類 system類Java筆記ObjectDecimal
- 記錄一次WPF命令引數報錯,InvalidCastException: T for DelegateCommand<T> is not an object nor Nullable.ASTExceptionObjectNull
- 副本集要點
- 賽題要點
- 做資料視覺化,謹記三大要點視覺化
- 伺服器資料儲存,這幾點要牢記。伺服器
- 要點提煉| 理解JVM之GC&記憶體分配JVMGC記憶體
- 要點提煉| 理解JVM之記憶體管理機制JVM記憶體
- Object-hashCode演算法筆記Object演算法筆記
- Readhub App 上架 Google Play Store 實錄及技術要點總結APPGo