一:对象初始化
1:main方法所在的类需要加载和初始化
比如上面的mian方法里面是空运行也会有值打印
2:子类初始化的适合父类会先初始化
从上面结果也能看出
3:一个类的初始化就是执行<clinit>()指令查看.class
<clinit>()执行其实就是加载static变量、代码块和方法 按照代码顺序执行 且只执行一次 这也就是单例饿汉式安全的原因
二:实例初始化
实例初始化就是执行<init>()指令
实例化几次就会执行几次 <init>()
<init>()主要实例化构造器和非静态变量、方法和代码块 执行顺序是按照顺序执行 构造器最后执行
首先执行父类的<init>()方法再执行子类的
子类重写父类 子类实例化将执行子类的重写方法
验证上面所说