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) 收藏 举报
浙公网安备 33010602011771号