Java:<init>和<clinit>有什么区别?
我无法理解以下文本...这是否意味着适用于空构造函数?为什么有两个不同的版本很重要?<clinit>
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html
2.9. Special Methods
在 Java 虚拟机级别,每个构造函数 (§2.12) 都显示为具有特殊名称的实例初始化方法。此名称由编译器提供。由于该名称不是有效的标识符,因此不能直接在用 Java 编程语言编写的程序中使用它。实例初始化方法只能在 Java 虚拟机中由调用专用指令调用,并且只能在未初始化的类实例上调用。实例初始化方法采用派生该方法的构造函数的访问权限 (§2.7.4)。
<init>
<init>
类或接口最多有一个类或接口初始化方法,并通过调用该方法进行初始化 (§2.17.4)。类或接口的初始化方法是静态的,不带任何参数。它具有 特殊名称 。此名称由编译器提供。由于该名称不是有效的标识符,因此不能直接在用 Java 编程语言编写的程序中使用它。类和接口初始化方法由 Java 虚拟机隐式调用。它们从不直接从任何 Java 虚拟机 inw2 结构调用,而只是作为类初始化过程的一部分间接调用。
<clinit>
<clinit>