共计 1762 个字符,预计需要花费 5 分钟才能阅读完成。
Java 中各个成员初始化程序
- 动态属性:static 结尾定义的属性
- 静态方法块:static{} 包起来的代码块
- main() 办法入口执行
- 一般属性:非 static 定义的属性
- 一般办法快:{} 包起来的代码块
- 无参构造函数:类名雷同的办法
- 一般属性:非 static 定义的属性
- 一般办法快:{} 包起来的代码块
- 带参数的参构造函数:类名雷同的办法(参数列表)
其中,动态属性和静态方法块,依照先定义的代码先执行。同理,一般属性和一般办法块,依照先定义的代码先执行。
具体代码如下:
public class JavaLifeCycle { | |
// 动态属性 | |
private static String staticField = getStaticField(); | |
// 静态方法块 | |
static {System.out.println("初始化静态方法块" + staticField); | |
} | |
// 一般属性 | |
private String field = getField(); | |
private String filed2 = getField2(); | |
// 一般办法块 | |
{System.out.println("初始化一般办法块" + field + "-" + filed2); | |
} | |
// 无参构造函数 | |
public JavaLifeCycle() {System.out.println("初始化无参构造函数"); | |
} | |
// 带参数的构造函数 | |
public JavaLifeCycle(String filed2) { | |
this.filed2 = filed2; | |
System.out.println("初始化带参数的构造函数" + filed2); | |
} | |
public static String getStaticField() {System.out.println("初始化动态属性"); | |
String staticFiled = "Static Field Initial"; | |
return staticFiled; | |
} | |
public String getField() {System.out.println("初始化一般属性 field"); | |
String filed = "Field Initial"; | |
return filed; | |
} | |
public String getField2() {System.out.println("初始化一般属性 field2"); | |
String filed2 = "Field2 Initial"; | |
return filed2; | |
} | |
// 静态方法 | |
public static void staticMethod() {System.out.println("初始化静态方法"); | |
} | |
// 一般办法 | |
public void method() {System.out.println("初始化一般办法"); | |
} | |
// 主函数 | |
public static void main(String[] argc) {System.out.println("开始执行 main 办法..."); | |
JavaLifeCycle lifeCycle = new JavaLifeCycle(); | |
lifeCycle.method(); | |
System.out.println("===================="); | |
JavaLifeCycle lifeCycle2 = new JavaLifeCycle("hello world"); | |
lifeCycle2.method();} | |
} |
输入后果如下:
初始化动态属性 | |
初始化静态方法块 Static Field Initial | |
开始执行 main 办法... | |
初始化一般属性 field | |
初始化一般属性 field2 | |
初始化一般代码块 Field Initial-Field2 Initial | |
初始化无参构造函数 | |
初始化一般办法 | |
==================== | |
初始化一般属性 field | |
初始化一般属性 field2 | |
初始化一般代码块 Field Initial-Field2 Initial | |
初始化带参数的构造函数 hello world | |
初始化一般办法 |
总结:
- 动态属性和静态方法块在 main 办法前初始化
- 动态属性和静态方法块,在第一次 new,即第一次初始化实例类前执行一次,之后 new 实例,不再执行
- 办法块在构造函数初始化之前执行
- 一般属性和一般办法块,在每一次 new 实例前执行一次
- 类中蕴含多个动态属性或静态方法块,依照先定义的代码先执行
- 类中蕴含多个一般属性或一般代码块,依照先定义的代码先执行
正文完