静态代码块static执行时机

1、类里面的静态代码区如下,TestStatic里面有一个静态代码块static

2、mian函数和静态代码块

3、静态代码块执行顺序

静态代码块在程序入口main方法之前就被执行 

静态代码块在使用反射时执行Class.forName

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

下面是执行static块的几种情况:

1、第一次new TestStatic对象,先执行static静态代码块,然后执行TestStatic构造函数



2、第一次调用Class.forName("com.test.TestStatic");

因为这个过程相当于Class.forName("TestStatic",true,this.getClass().getClassLoader());

如果Class.forName("TestStatic",false,this.getClass().getClassLoader()),false表明转载类的过程中不进行初始化,不初始化则不会执行static块。


3、loadClass

loadClass时并不会执行到静态代码区,因为loadClass内部调用到loadClass(name, false),没有进行初始化动作

 public Class<?> loadClass(String name) throws ClassNotFoundException {
        return loadClass(name, false);
    }

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值