最近比较忙,直接转载现成的。
本文转载地址为:http://advance0683.iteye.com/blog/1107653
Java中静态初始化块、初始化块和构造方法的执行过程
例子:
- package classmate;
- public class Team {
- public static void main(String[] args) {
- Person p = new Person();
- System.out.println("------------------------------");
- Person p1 = new Person();
- }
- }
- class Person{
- //构造方法
- public Person(){
- System.out.println("Person Constructor...");
- }
- //初始化代码块
- {
- System.out.println("Person Initialization Block...");
- }
- //静态代码块
- static {
- System.out.println("Person Static Block...");
- }
- }
运行结果:
- Person Static Block...
- Person Initialization Block...
- Person Constructor...
- ------------------------------
- Person Initialization Block...
- Person Constructor...
当创建第一个Person对象p的时候,执行顺序应该是 静态代码块 > 初始化代码块 > 构造方法,但是当创建第二个Person对象p1的时候,执行顺序就变成了 初始化代码块 > 构造方法。原因很简单,因为 静态代码块只会在类第一次装入系统中才会执行,以后类在装入系统的时候,它就不执行了。