为了账号安全,请及时绑定邮箱和手机立即绑定

对静态初始化块和普通初始化块的运行问题。

public class Demo1{
 int a;
 static{
 a=1;
 System.out.println("通过静态初始化块为变量a赋值:"+a);
 }
 public static void main(String[] args){
 }
}
运行结果:
通过静态初始化块为变量a赋值:1
问题:我在main方法里什么都没有声明和调用,系统怎么就可以运行该静态初始化块呢?
public class Demo2{
 int b;
 int c;
 public Demo2{
  b=7;
  System.out.println("通过构造方法为变量b赋值:"+b);
 }
 {
   c=9;
   System.out.println("通过初始化块为变量c赋值:"+c);
 }
 public static void main(Sting[] args){
  Demo2 hello2=new Demo2();
 }
}
运行结果:
通过初始化块为变量c赋值:9
通过构造方法为变量b赋值:7
问题:在main方法中我只调用了构造方法,为什么普通初始化块也会运行呢?从哪里运行的呢?望高手解答,谢谢!


正在回答

3 回答

静态初始化代码块在 .class字节码加载进内存时,就开始运行了。

普通初始化块先于构造方法执行。


0 回复 有任何疑惑可以回复我~

静态代码块 > 构造代码块 > 构造方法

0 回复 有任何疑惑可以回复我~

第16行构造方法少写了()

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530553    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

对静态初始化块和普通初始化块的运行问题。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信