java初始化顺序

时间:2022-03-31 19:47:42

先放一个具体的例子在前边

package com.markhonest.practice;

public class InitializedOrder {
private static int x1 = printInit("static Insect.x1 initialized");

private int i = 9;
protected int j;

InitializedOrder(){
System.out.println(
"i = " + i + ", j = " + j);
j
= 39;
}

static int printInit(String s){
System.out.println(s);
return 47;
}

public static void main(String[] args) {
InitializedOrder
initializedOrder= new InitializedOrder();
     System.out.println(initializedOrder.j); }
}

1)编译器会先加载这个类,这个时候会初始化静态全局变量x1。

2)然后会调用static的main方法,在例子中要创建类InitializedOrder的对象,这个时候会首先初始化全局变量i和j,对于没有在声明中初始化的基本变量j,初始化为0,如果这里是一个引用会初始化为null。

3)再然后会调用构造器,在例子中会先打印到控制台,然后给j赋值39。

控制台输出:

static Insect.x1 initialized
i = 9, j = 0
39