欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

字节码中的两个方法init,clinit

发布时间:2025/5/22 编程问答 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 字节码中的两个方法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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。