java初始化顺序

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

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



 

posted on 2017-11-13 10:36  markhonest  阅读(104)  评论(0)    收藏  举报