基础知识:ClassLoader - 静态代码块在什么时候执行

Java误区: 静态代码块,会在类被加载时自动执行?

--------------

当虚拟机载入某个class文件时,首先生成该class文件对应的类的Class对象,所以Class.forName()方法在进行类的加载时,生成了对应的类的Class对象,并且调用了其中的静态代码块。

但是反过来应该不成立,即你得到了该class文件对应的类的Class对象时(有点拗口,注意大小写),并不一定就加载了该class文件对应的类。楼主的.class方法得到了对应的Class对象,但是并没有加载该类,没有加载自然就不会执行静态代码块的内容。

-----------

类加载的时候不会执行,在类初始化的时候执行

类加载过程: Chapter 5. Loading, Linking, and Initializing

Java虚拟机 类加载的过程

java的static块执行时机


基础知识:ClassLoader - 静态代码块在什么时候执行_第1张图片


Class.forName(String name, boolean  initialize,ClassLoader loader)

Class.forName() ---> initialize = true

forName

你可能感兴趣的:(基础知识:ClassLoader - 静态代码块在什么时候执行)