作者: 影子木木 时间: 2012-9-11 00:00
static代码块只能加载一次, 你new 了两个A()也只会执行一次System.out.println("A");
所以顺序就为 B C A D D E作者: 王得新 时间: 2012-9-11 00:04 本帖最后由 王得新 于 2012-9-11 00:09 编辑
new A();//5. 再一次new,就会再进入A类(就是步骤3,但是静态代码块已经执行,所以不输出 -------->"A")
//6.接着是构造代码块(非静态代码块)------------------>"D",接着是构造函数,没有就不执行。
System.out.println("E");
}
static{System.out.println("C");} //2.静态代码块优先于主方法-------------->"C"
}
所以结果是B C A D D E
public static void main(String[] args) {
new A();3.实例化A类,先加载A类静态代码块,再加载A类构造代码块,静态代码块优于构造代码块执行
new A();4.再实例化A类,静态代码块只加载一次,再加载A类构造代码块
System.out.println("E");5.输出E
}
static{System.out.println("C");}2.加载Test类的这个静态代码块
}
所以最后结果是
B
C
A
D
D
E
楼主你要知道一个类中的静态代码块只会被加载一次
作者: 杨千里 时间: 2012-9-11 00:54
静态代码块随着类的加载而加载只执行一次,所以
static{
System.out.println("A");
}
只执行一次。
其他的都正确,所以顺序 是: B C A D D E