class Cup{
Cup(int er){
System.out.println("cup("+ er +")");
}
    void f(int er){
        System.out.println("f("+er+")");
      }
    
}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()谢谢

解决方案 »

  1.   

     Cups.cup1.f(99);
    这句话载入了类时会执行Cups的静态块,不会调用构造函数
      

  2.   

    cup1 = new Cup(1);
    cup2 = new Cup(2);楼主有在哪里创建Cups对象吗???
    我没看到...
    不知道楼下有没有人看到.
      

  3.   

    邪恶了。第一时间想到cup f ,好大啊
      

  4.   

    Cups.cup1.f(99);用到了Cups类,首先会加载Cups类会执行Cups的静态块,就会初始化cup1 cup2 于是打印了前两2句接着调用f()  于是打印了第三句。
      

  5.   

    因为static 静态块是先于构造方法 之前执行的。Cups()没有输出 因为没有实例化对象,就不会调用构造方法。
      

  6.   

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

  7.   

    Cups.cup1调用的Cups中的静态属性 cup1 ,你又没有调用他的new 创建对象 ,当然不会调用他的构造方法,所以没有输出Cups() 了 
      

  8.   

    java中类的初始化顺序:
    静态变量
    静态初始化块
    变量
    初始化块
    构造器