1. 虚拟机在首次加载Java类时,会对静态代码块、静态成员变量、静态方法进行一次初始化(静态间按顺序执行)。
2. 只有在调用new方法时才会创建类的实例。
3. 类实例创建过程:父子继承关系,先父类再子类。父类的静态->子类的静态->父类的初始化块->父类的构造方法->子类的初始化块->子类的构造方法
4. 类实例销毁时候:首先销毁子类部分,再销毁父类部分。
package com.demo;
/**
* Created by Ranjx on 2018/7/20.
*/
public class Persion {
static {
System.out.println("父类静态代码块执行");
}
{
System.out.println("父类构造代码块执行");
}
Persion () {
System.out.println("父类构造方法执行");
}
void done() {
System.out.println("父类done方法执行");
}
public static void main(String[]args) {
//类加载顺序
//静态代码块->构造代码块->构造方法->普通方法
Persion persion = new Persion();
persion.done();
}
}
package com.demo;
/**
* Created by Ranjx on 2018/7/20.
*/
public class Child extends Persion{
static {
System.out.println("子类静态代码块执行");
}
{
System.out.println("子类构造代码块执行");
}
Child () {
System.out.println("子类构造方法执行");
}
void done() {
System.out.println("子类done方法执行");
}
public static void main(String[]args) {
//子类继承父类,创建子类对象,类加载顺序
//父类静态代码块->子类静态代码块->父类构造代码块->父类构造方法->子类构造代码块->子类构造方法->子类方法
Child child = new Child();
child.done();
}
}