_Jack_Han_
2016-01-02 23:17
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行构造方法少写了()
Java入门第二季
531287 学习 · 6327 问题
相似问题