java 类初始化的顺序_java类初始化顺序

一、概述

了解类的初始化顺序,可以更灵活、方便的构造一个类。

二、类初始化顺序

2.1 示例

public class InitialOrderTest {

public static void main(String[] args) {

new InitialOrderTest();

}

// 变量

public FieldClass field = new FieldClass("变量");

// 初始化块

{

System.out.println("初始化块");

}

// 静态变量

public static FieldClass staticField = new FieldClass("静态变量");

// 静态初始化块

static {

System.out.println("静态初始化块");

}

// 构造器

public InitialOrderTest() {

System.out.println("构造器");

}

}

public class FieldClass {

public FieldClass(String msg){

System.out.println(msg);

}

}

2.2 结论

2.1 示例运印结果:

1.静态变量

2.静态初始化块

3.变量

4.初始化块

5.构造器

三、继承关系初始化顺序

3.1 示例

public class Parent {

public Parent(){

System.out.println("父类构造器");

}

//静态初始块

static{

System.out.println("父类静态初始化");

}

//静态变量

public static FieldClass parentStaticField=new FieldClass("父类静态变量");

//初始化块

{

System.out.println("父类初始化块");

}

//变量

public FieldClass parentField=new FieldClass("父类变量");

}

public class Child extends Parent{

public Child(){

System.out.println("子类构造器");

}

//静态初始块

static{

System.out.println("子类静态初始化");

}

//静态变量

public static FieldClass childStaticField=new FieldClass("子类静态变量");

//初始化块

{

System.out.println("子类初始化块");

}

//变量

public FieldClass childField=new FieldClass("子类变量");

public static void main(String[] args){

new Child();

}

}

public class FieldClass {

public FieldClass(String msg){

System.out.println(msg);

}

}

3.2 结论

3.1 示例打印结果:

1. 父类静态初始化

2. 父类静态变量

3. 子类静态初始化

4. 子类静态变量

5. 父类初始化块

6. 父类变量

7. 父类构造器

8. 子类初始化块

9. 子类变量

10. 子类构造器

四、静态变量与静态初始化块、变量与初始化块的顺序

仔细观察以上两个示例,会发现关于静态变量与静态初始化块、变量与初始化块的结果打印顺序是不同的,所以最终的结论:静态变量和静态初始化块、变量和初始化块的初始化顺序取决于在类中定义的顺序。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值