字节码中的两个方法init,clinit
生活随笔
收集整理的這篇文章主要介紹了
字节码中的两个方法init,clinit
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
<init>方法
在JVM層面每一個構造方法都有一個特殊的名字叫<init>,這個名字是在編譯器中就提供了的, 由于<init>不規范的java命名,所以我們在java代碼里是沒法直接使用的,一個實例的初始化方法在虛擬機中是通過調用invokespecial指令來完成的。
<clinit>方法
同樣對于類或者接口的靜態程序塊,在JVM層面也給了他一個特殊的名字<clinit>,無論是類或者接口在被加載到class loader的時候,Java虛擬機都會調用這個類或接口的<clinit>的方法,這個方法是個無參的,返回類型為void方法,這個方法名也是編譯器指定的,由于這個方法名并不是一個規范的方法名,所以我們無法在代碼中直接使用。
說了這么多,其實讀到這里只要記住兩點:在字節碼層面<init>表示構造方法,<clinit>表示靜態程序塊。
ref:The JavaTM Virtual Machine Specification(Second Edition) 3.9 Specially Named Initialization Methods
轉載于:https://my.oschina.net/u/437581/blog/518113
總結
以上是生活随笔為你收集整理的字节码中的两个方法init,clinit的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Swift2.1 语法指南——自动引用计
- 下一篇: FreeMark将long类型的时间格式