显式初始化

一个静态域或者一个静态块,只执行一次初始化:当首次生成这个类的一个对象时,或者首次访问属于这个类的静态数据成员时(即便没有生成这个类的对象)。

 

例子:

class Cup{
    Cup(int marker){
        System.out.println("Cup( " + marker + " )");
    }
    
    void f(int marker){
        System.out.println("f( " + marker +" )");
    }
}

class Cups{
    static Cup cup1;
    static Cup cup2;
    static{
        cup1 = new Cup(1);
        cup2 = new Cup(2);
    }
    Cups(){
        System.out.println("Cups()");
    }
}

public class ExplicitStatic {
    public static void main(String[] args) {
        System.out.println("Inside main()");
        Cups.cup1.f(99);
    }
    static Cups cups1 = new Cups();
    static Cups cups2 = new Cups();
}
/*output:
Cup( 1 )
Cup( 2 )
Cups()
Cups()
Inside main()
f( 99 )
*/

分析:

  无论创建了多少个Cups对象,只对Cups类中的静态域和静态块执行一次初始化。

posted @ 2017-12-08 09:24  Aristole  阅读(1058)  评论(0编辑  收藏  举报