1. 先初始化全局变量,再初始化构造器
2. 先初始化父类,再初始化子类
3. 先初始化静态变量,再初始化其他变量
4. 静态变量第一次调用时初始化,只初始化一次
package com.yjq.cn.initialize;
public class OrderOfInitial {
public static void main(String[] args) {
One one = new One();
System.out.println("先初始化参数,再初始化构造方法");
System.out.println("-------");
Two two = new Two();
System.out.println("先初始化父类,再初始化子类");
System.out.println("-------");
Three three = new Three();
System.out.println("先初始化静态参数,再初始其他参数");
System.out.println("-------");
Three three2 = new Three();
System.out.println("静态参数只初始化一次");
}
}
class One {
private int a = f1(1);
private String b = f2("2");
public One() {
System.out.println("one");
}
public int f1(int i) {
System.out.println("f1");
return i;
}
public String f2(String s) {
System.out.println("f2");
return s;
}
}
class Two extends One {
private int c = f3(3);
private String d = f4("4");
public Two() {
System.out.println("two");
}
public int f3(int i) {
System.out.println("f3");
return i;
}
public String f4(String s) {
System.out.println("f4");
return s;
}
}
class Three {
private int g = f6(6);
static One one = new One();
private int f = f5(5);
public Three() {
System.out.println("Three");
}
public int f5(int i) {
System.out.println("f5");
return i;
}
public int f6(int i) {
System.out.println("f6");
return i;
}
//output
f1
f2
one
先初始化参数,再初始化构造方法
-------
f1
f2
one
f3
f4
two
先初始化父类,再初始化子类
-------
f1
f2
one
f6
f5
Three
先初始化静态参数,再初始其他参数
-------
f6
f5
Three
静态参数只初始化一次