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方法中我只调用了构造方法,为什么普通初始化块也会运行呢?从哪里运行的呢?望高手解答,谢谢!
静态初始化代码块在 .class字节码加载进内存时,就开始运行了。
普通初始化块先于构造方法执行。
静态代码块 > 构造代码块 > 构造方法
第16行构造方法少写了()