Wednesday, September 10, 2008

java类初始化顺序

1、类只有在使用New调用创建的时候才会被JAVA类装载器装入

2JAVA类首次装入时,会对静态成员变量或方法进行一次初始化,但方法不被调用是不会执行的,静态成员变量和静态初始化块级别相同,非静态成员变量和非静态初始化块级别相同。

先初始化父类的静态代码--->初始化子类的静态代码-->

初始化父类的非静态代码--->初始化父类构造函数--->

初始化子类非静态代码--->初始化子类构造函数

3、创建类实例时,首先按照父子继承关系进行初始化

4、类实例创建时候,首先初始化块部分先执行,然后是构造方法;然后从

本类继承的子类的初始化块执行,最后是子类的构造方法

5、类消除时候,首先消除子类部分,再消除父类部分

class A {
    static {
       System.out.print("1");
    }
 
    A() {
       System.out.print("2");
    }
}
 
class B extends A {
    static {
       System.out.print("A");
    }
 
    B() {
       System.out.print("B");
    }
}
 
publicclass ConstructorAndStaticBlock {
    publicstaticvoid main(String[] args) {
       A ab = new B();
       ab = new B();
    }
}

执行结果:

1A2B2B



Reactions

babyblueboy | 2008-09-14 10:54 | IP:218.58.59.73

真麻烦啊,找不到啊,弄成中文的吧!中秋快乐!


Add a reaction

About You

Comment