标签:style blog color ar sp div on log new
1、static{}(即static块),会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法。
主要语句:
package exam2; public class A { public A() { System.out.println("constructor of A"); } static { System.out.println("static block of A"); } public static void main(String[] args) { // 因为执行main(),所以A会被加载,A的static{}会执行,但是不会执行A的构造函数,除非有new A()。 } } class B { static int b; public B() { System.out.println("constructor of B"); } static { System.out.println("static block of B"); } } class C extends B{ public C() { System.out.println("constructor of C"); } static { System.out.println("static block of C"); } }
输出为A的static语句.
(1)当main()函数的语句为
B b;//不会执行B的static块语句
(2)当main()函数的语句为
B b=new B();//执行B的static块语句,然后执行B的construct语句
(3)当main()函数的语句为
System.out.println(B.b);// 单单执行这条语句会执行B的static块语句,即使b没有赋值
(4)
B b=new C();//先执行父类B的static,然后执行子类C的static,然后执行父类B的构造函数,最后执行子类的构造函数
注意:如果之前已经执行过B的static,再B b=new C(),不会再输出static语句了,类只会加载一次。
Done
标签:style blog color ar sp div on log new
原文地址:http://www.cnblogs.com/xingyyy/p/4060810.html