您的位置 首页 java

java的static块执行时机

之前一直认为static块是在class load的时候执行,今天在验证Spring初始化Context loader的时候,发现 bean 的static块并没有执行。

Java 代码:

 1 Class A{   
2    static{
3       System.out.println(" static  block invoked!")
4    }
5 }  

那么static块到底在什么时候运行的呢?如果了解 JVM 原理,我们知道,一个类的运行分为以下步骤:

 
实际上,static块的执行发生在“初始化”的阶段。初始化阶段,jvm主要完成对静态变量的初始化,静态块执行等工作。

下面我们看看执行static块的几种情况:

1、第一次new A()的过程会打印””;因为这个过程包括了初始化

2、第一次Class.forName(“A”)的过程会打印””;因为这个过程相当于Class.forName(“A”,true,this.getClass().getClassLoader());

3、第一次Class.forName(“A”,false,this.getClass().getClassLoader())的过程则不会打印””。因为 false 指明了装载类的过程中,不进行初始化。不初始化则不会执行static块。

文章来源:智云一二三科技

文章标题:java的static块执行时机

文章地址:https://www.zhihuclub.com/192529.shtml

关于作者: 智云科技

热门文章

网站地图