Java笔记(四)类的初始化

类的初始化


 

<clinit>()方法:就是在代码进行类的初始化阶段的时候,被jvm调用的方法,专门承担类变量的初始化工作。(该方法只能被jvm虚拟机调用!!);

所谓类的初始化阶段就是,给类变量赋予正确的初始化值,是一个接口或者类被使用之前做的最后一项工作;

类的初始化阶段执行时机:

  • 首次调用某个类的静态方法时候;
  • 首次new一个对象的时候;
  • 首次初始化某个类的子类的时候(会先进行父类的初始化);
  • 首次使用反射进行创建对象的时候;

类的初始化过程

一个类要创建对象,要先加载并初始化改类;

实例化子类的时候,会先加载并初始化父类,初始化类的时候会由JVM虚拟机调用<clinit>()方法;

<clinit>()方法是由静态类变量显示赋值代码和静态代码块组成;

类变量显示赋值代码和静态代码块的执行顺序是从上到下依次执行;

<clinit>()方法只会执行一次;

<init>()

<init>()方法是实例初始化要执行的方法;

  • 此方法具体数量不定,有几个构造方法就有几个<init>()方法;
  • <init>()方法是由非静态类变量赋值代码和非静态代码块、对应构造器代码组成
  • 非静态类变量赋值代码和非静态代码块的执行顺序是从上到下依次执行,而对应的构造器代码最后执行;
  • 每次实例化对象调用对应的构造器代码就是执行<init>()方法;
  • <init>()方法首行是super或super(实参)对应的就是父类的<init>()方法

 

posted @ 2021-05-13 08:20  多来香菜不要葱  阅读(222)  评论(0)    收藏  举报