美文网首页
类初始化顺序

类初始化顺序

作者: 王简书2009 | 来源:发表于2017-09-27 21:18 被阅读0次
当类第一次加载到内存中的时候初始化
  1. 父类静态成员和静态初始化块,按在代码中出现的顺序依次执行。
  2. 子类静态成员和静态初始化块,按在代码中出现的顺序依次执行。
  3. 父类的实例成员和实例初始化块,按在代码中出现的顺序依次执行。
  4. 执行父类的构造方法。
  5. 子类实例成员和实例初始化块,按在代码中出现的顺序依次执行。
  6. 执行子类的构造方法。
非静态初始化块和静态初始化块的区别?
  • 非静态初始化块主要用于对象的初始化,每次创建对象都要调用一次,其执行顺序在构造方法之前。
  • 静态初始化块主要用来初始化静态变量,只调用一次,类第一次加载到内存中调用。
  • 非静态成员变量不能在静态方法中使用,同样也不能在静态初始化中初始化
如何验证静态变量和静态初始化块按代码出现顺序
public class TestOrder {
    
    // 静态初始化块
    static {
        System.out.println("静态初始化块");
    }
    
    // 静态变量
    public static TestA a = new TestA();

    // 静态变量
    public static TestB b = new TestB();

    public static void main(String[] args) {
        new TestOrder();
    }
}

class TestA {
    public TestA() {
        System.out.println("Test--A");
    }
}

class TestB {
    public TestB() {
        System.out.println("Test--B");
    }
}

这段代码巧妙运用了类初始化会调用构造方法,让人可以直观的看到变量的初始化过程。

相关文章

  • C++对象模型5——对象的构造/析构

    对象的构造/析构顺序 初始化虚基类,按照继承顺序,从左到右,从最深到最浅。 初始化按照继承顺序初始化父类,如果父类...

  • 9道题来理解什么是类的主动引用和被动引用

    剖析类的初始化顺序? 题目: 执行结果: 剖析类的初始化顺序? 先执行父类的方法,再执行子类的

  • 构造器内部的多态方法的行为

    上一篇 :Java类初始化顺序 上一节我们简单总结了类的初始化顺序。父类(静态变量、静态初始化块)>子类(静态变量...

  • [转]Effective C++学习笔记:初始化列表中成员列出的

    类成员的默认初始化顺序是按照声明顺序进行, 如果使用初始化列表初始化成员变量, 则必须按照成员变量的声明顺序进行;...

  • 类初始化顺序

    对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始...

  • 类初始化顺序

    当类第一次加载到内存中的时候初始化 父类静态成员和静态初始化块,按在代码中出现的顺序依次执行。 子类静态成员和静态...

  • 类初始化顺序

    前言 做Java开发将近一年半了,虽然之前系统地学习过Java,但是实践出真知,最近总感觉还有好多知识点没有掌握,...

  • 类初始化顺序

    前些日至写代码的时候又碰到一个问题,类似于这样: 子类调用父类的构造器,传入自身的非静态成员变量,编译器会报错依稀...

  • 类初始化顺序

    一个类中包含如下几类东西,他们前后是有顺序关系的 静态属性:static 开头定义的属性静态方法块: static...

  • 类初始化和加载过程

    一、对象的初始化顺序: java类加载器加载类的顺序:http://blog.csdn.net/crazycode...

网友评论

      本文标题:类初始化顺序

      本文链接:https://www.haomeiwen.com/subject/apkpextx.html