JVM init和cinit的理解
JVM的类加载机制中,准备阶段和初始化阶段尤为重要,在程序设计中有时候起到至关重要的作用。因此今天来根据一个例子来讲解JVM中<init>和<cinit>的过程。 吊炸天的Java题目,请问输出结果是什么? public class JavaTest { public static void main(String[] args){ f1(); } static JavaTest javaTest = new JavaTest(); static { System.out.println("1"); } { System.out.println("2"); } JavaTest(){ System.out.println("3"); System.out.println("a=" + a + ", b=" + b); } public static void f1(){ System.out.println("4"); } int a = 100; static int b = 200; } 先给出正确答案: 2 3 a=100, b=0 1 4 init和clinit区别 ①init和clinit方法执行时机不同 init是对象构造器方法,也就是说在程序执行 new 一个对象调用该对象类的 constructor 方法时才会执行init方法,而clinit是类构造器方法