对静态初始化块和普通初始化块的运行问题。
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方法中我只调用了构造方法,为什么普通初始化块也会运行呢?从哪里运行的呢?望高手解答,谢谢!