public class HelloWorld {
int num1;
int num2;
static int num3;
public HelloWorld(){
num1=89;
System.out.println("通过构造方法为变量num1赋值");
}
{
num2=90;
System.out.println("通过初始化块为变量num2赋值");
}
static{
num3=78;
System.out.println("通过静态初始化块为变量num3赋值");
}
public static void main(String[] args) {
HelloWorld hello2=new HelloWorld();
HelloWorld hello=new HelloWorld();
System.out.println(hello.num1);
System.out.println(hello.num2);
System.out.println(num3);
}
执行结果:
通过静态初始化块为变量num3赋值
通过初始化块为变量num2赋值
通过构造方法为变量num1赋值
通过初始化块为变量num2赋值
通过构造方法为变量num1赋值
89
90
78
静态变量优先于对象加载
java对象实例化时的顺序(静态成员变量、静态代码块、成员变量、方法块加载、构造函数加载)
应该是优先构造方法准确点
静态优先于对象加载