JAVA笔试之初始化顺序

class  A {
    
static{
        System.out.println(
"1");
    }

    
    
public A(){
        System.out.println(
"2");
    }

}


class  B  extends  A {
    
static{
        System.out.println(
"a");
    }

    
    
public B(){
        System.out.println(
"b");
    }

}

public   class  Hello  {

    
/**
     * 
@param args
     
*/

    
public static void main(String[] args) {
        
// TODO Auto-generated method stub

        A ab
=new B();
        ab
=new B();
    }


}

 上面程序的执行结果是:

1
a
2
b
2
b

 

总结:

 * (1)初始化总是在方法(包括构造器)执行之前先初始化
 * (2)如果数据是静态的:如果它属于基本类型,而且没有对它进行初始化,那么它会获得
 *    基本数据类型的标准初值;如果它是一个对象引用,那么除非你新建一个对象,并
 *    指派给该引用,否则它就是null.
 * (3)静态对象初始化只有在必要时刻时才会进行.初始化的顺序是先"静态"(如果它们
 *    尚未因前面的对象创建过程而被初始化),后"非静态".静态对象只进行一次初始化工作.

* (4)类的加载时先执行基类的构造函数再执行子类的构造函数.

你可能感兴趣的:(java,String,Class,化工)