静态块什么情况下执行

概括的说:静态代码块在类加载时调用,并且只调用一次。
静态代码块最常用的作用就是:给一个对象的属性初始化。
具体的说:
1.当调用一个类的静态变量时,这个类中的静态代码块会执行。【只有静态代码块会执行】
2.当调用一个 类的静态方法时,这个类中的静态代码块会执行。【只有静态代码块会执行】
3.当创建一个 类的一个实例时,这个类中的静态代码块、非静态代码块(也叫构造代码块)、创建实例的相应的构造方法都会执行。
注:仅仅调用类中静态常量时,静态块是”不会”执行的
只有在首次主动使用的时候会导致类的初始化。
主动使用的几种情况:
1:创建类的实例,例如:new XX();
2:访问某个类或者接口的静态变量,或者对该静态变量赋值;
3:调用类的静态方法
4:反射,例如:Class.forName("XX");
5:初始化一个类的子类
6:Java虚拟机其董事会被标注为启动的类,例如:java XX
通过ClassLoader.loadClass()方法动态加载,不会执行初始化块。这一步仅仅是加载了class,获得class对象,并没有执行连接、初始化
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EmineWang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值