當我們運行Java應用程序時,我們知道要加載的第一個對象是java.lang.Object
。但是,java.lang.Object
具有拋出異常的方法,如CloneNotSupportedException
或InterruptedException
,這反過來是其他對象。Java應用程序啓動 - 如何創建第一個對象
問題是:當java.lang.Object
剛剛被加載時,如何讓它的子對象(例如異常對象)被創建?
當我們運行Java應用程序時,我們知道要加載的第一個對象是java.lang.Object
。但是,java.lang.Object
具有拋出異常的方法,如CloneNotSupportedException
或InterruptedException
,這反過來是其他對象。Java應用程序啓動 - 如何創建第一個對象
問題是:當java.lang.Object
剛剛被加載時,如何讓它的子對象(例如異常對象)被創建?
loaded
和instantiated
是兩個不同的東西。
粗糙解釋:
loaded
指JVM裝載的類到它的基類加載器。這使得該類可用於實例。當JVM啓動時,它首先通過使用/鏈接的文件加載所有類,而沒有實例化它們。這意味着,當第一個new Object()
創建時,Object
使用的例外已知。這仍然是一個聲明。只有在引發特定異常時纔會創建該異常的實例。
對於技術上是正確的解釋見這@Jim駐軍已經提到的鏈接:
謝謝!爲簡短回答和指導。 – Shivaprasad
請不要在這裏張貼問題之前,一些研究。 https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-5.html –
通過「創建」,我假設你的意思是「加載」? – shmosel
是創建意味着加載 – Shivaprasad