System.out.println("Final Test StaticBlock"); //未执行
}
}
public class Test2 {
public static void main(String[] args) {
System.out.println(FinalTest.x);
}
}
复制代码
运行结果:2
class FinalTest{
public static final int x = new Random().nextInt(100);
static{
System.out.println("Final Test StaticBlock");//执行
}
}
public class Test2 {
public static void main(String[] args) {
System.out.println(FinalTest.x);
}
}
复制代码
运行结果:
Final Test StaticBlock
83
记得毕老师的视频里讲的.class文件加载进内存之后,要先执行静态代码块对类进行初始化,但程序一没有执行static代码块中的内容,并没有对类初始化,为什么?
第二个程序初初始化值是一个随机运算的随机数,执行了staitc代码块中的内容,肯定对类进行了初始化,帮忙从类的加载过程解释一下,包括类加载器是怎样把.class文件加载进内存需要做哪些工作以及主动加载和被动加载的区别?