日期:2014-05-20  浏览次数:20626 次

java 静态初始化疑问
Java code


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 JingTai {
    
    public static void main(String[] args){
        System.out.println("Inside main()");
        Cups.cup1.f(99);
    }
    
    

}





输出结果为

Inside main()
cup(1)
cup(2)
f(99)



为什么没输出Cups()

谢谢



------解决方案--------------------
在你的Main方法中
System.out.println("Inside main()");
Cups.cup1.f(99); 这两句代码第一句直接输出Inside main(),第二句是调用f()方法,你要加一个new Cups()调用Cups构造方法才会显示你想要的Cups()。