初始化对象
类在初始化过程中一般会以下几个部分进行初始化
- 静态属性:static 开头定义的属性
- 静态方法块: static {} 圈起来的方法块
- 普通属性: 未带static定义的属性
- 普通方法块: {} 圈起来的方法块
- 构造函数:
- 类名相同的方法 方法: 普通方法
初始化顺序
静态变量 > 静态方法块 > 普通变量 > 普通方法块 > 构造函数
Q:为什么构造函数是最后一个?
A:构造函数是最后一个,才能有机会去修改属性的值,如果构造函数优先级最高,那么普通变量进行初始化会把构造函数的内容覆盖了。
测试代码
LifeCycle函数
package lifeCycle;
public class LifeCycle {
// 静态属性
private static String staticField = getStaticField();
// 静态方法块
static {
System.out.println(staticField);
System.out.println("静态方法块初始化");
System.out.println("Static Patch Initial");
}
// 普通属性
private String field = getField();
// 普通方法块
{
System.out.println(field);
System.out.println("普通方法块初始化");
System.out.println("Field Patch Initial");
}
// 构造函数
public LifeCycle() {
System.out.println("构造函数初始化");
System.out.println("Structure Initial ");
}
public static String getStaticField() {
String statiFiled = "Static Field Initial";
System.out.println("静态属性初始化");
return statiFiled;
}
public static String getField() {
String filed = "Field Initial";
System.out.println("普通属性初始化");
return filed;
}
}
Test函数
package lifeCycle;
public class Test {
public static void main(String[] args) {
new LifeCycle();
}
}
测试结果
静态属性初始化
Static Field Initial
静态方法块初始化
Static Patch Initial
普通属性初始化
Field Initial
普通方法块初始化
Field Patch Initial
构造函数初始化
Structure Initial