java类的加载及对象的创建过程

java类的加载及对象的创建过程

类加载过程

  1. 当JVM第一次要使用一个类的时候,需要加载这个类;
  2. 首先根据classpath的配到硬盘上找这个类的class文件(如果没有配置classpath,就到当前位置找);
  3. 如果找到这个class,就加载到方法区;
    a) 分别将这个类的静态成员加载到静态区域,非静态成员加载到非静态区域;
    b) 在静态区域为所有静态成员变量分配空间,赋默认值;
    c) 为所有静态成员变量显示赋值
    d) 执行所有静态代码块
    (c和d具体顺序是按照代码书写的先后顺序)
    等到静态代码块都执行完毕,类加载完成;

对象的创建过程

  1. JVM遇到new关键字,首先回去堆内存中开辟空间;
  2. 为所有非静态的成员变量分配空间,赋默认值;
  3. 调用相应的构造函数进栈执行;
  4. 构造函数执行时首先要执行隐式三步:
    a) super():调用父类构造函数 // 如果第一行是this就调用this
    b) 给对象中所有非静态成员变量显示赋值;
    c) 执行构造代码块;
    (b和c具体执行顺序,是按照代码书写的先后顺序)
  5. 隐式三步执行结束后,开始执行构造函数中的代码;
    等到构造函数结束出栈,对象才算创建完成