首页 > 代码库 > static块语句

static块语句

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

static块语句