您的位置:首页 > 编程语言 > Java开发

关于Java变量初始化顺序问题实践

2014-06-10 23:51 423 查看
逛逛论坛,看到里面讨论Java类变量初始化顺序问题,然后自己也想了一下,发现与讨论有点出入,怀疑记忆出了问题,然后马上上机验证,得出一下结论:

Java类变量初始化顺序为:父类静态成员初始化——>父类静态块初始化——>子类静态成员初始化——>子类静态块初始化——>父类成员变量初始化——>父类代码块初始化——>父类构造方法——>子类成员变量初始化——>子类代码块初始化——>子类构造方法

1、测试类:Test

public class Test {

public Test(String string) {
System.out.println(string);
}

}


2、Father类:

public class Father {

static Test father = new Test("父类静态成员初始化");

Test father2 = new Test("父类成员变量初始化");

static {
System.out.println("父类静态块初始化");
}

{
System.out.println("父类代码块代码块");
}

public Father() {
System.out.println("父类构造方法");
}

public Father(String string) {
System.out.println(string);
}

}


3、Son类:

public class Son extends Father {

static Test son = new Test("子类静态成员初始化");

Test son2 = new Test("子类成员变量初始化");

static {
System.out.println("子类静态块初始化");
}

{
System.out.println("子类代码块代码块");
}

public Son() {
System.out.println("子类构造方法");
}

public Son(String string) {
System.out.println(string);
}

}


4、场景类

public class TestMain {
public static void main(String[] args) {
new Son();
}
}


运行结果:



很显然上面说的运行结果是正确的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: