类初始化的顺序
父类静态变量和语句块(static{})
子类的静态变量和语句块
父类的非静态变量和语句块({})
父类的构造函数
子类的非静态变量和语句块
子类的构造函数
(成员对象构造函数优于类的构造函数执行)
会导致类初始化的情况
- main 方法所在的类,总会被首先初始化
- 首次访问这个类的静态变量或静态方法时
- 访问子类继承父类的静态变量,只触发父类的初始化
- Class.forName new 会导致初始化
不会导致类初始化的情况
- 访问类的 static final 静态常量(基本类型和字符串{不使用new})不会触发初始化当前类及其父类
- .class 不会触发初始化
- 创建该类的数组不会触发初始化
- Class c=classLoader.loadClass(“A”);
版权声明:本文为qq_44671005原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。