class NewParent{
static int hoursofSleep=2.0
static{
System.out.println("NewParent was initialized.");
      }
}
class Example2{
public static void main(String[] args){
int hours=NewParent.hoursofSleep;System.out.println(hours);
static{
System.out.println("Example2 was initialized.");
      }                                       }
}
--------------------------------------------
the result is:
Example2 was initialized.
NewParent was initialized.
2
-----------------------------------------------
question:
为什么会有NewParent was initialized.的打印输出,调用了NewParent的field,又没有调用它的后面的语句,关后面的输出语句什么事啊?另外为什么是Example2 was initialized.先打印而不是在最后打印?

解决方案 »

  1.   


    //这才是你程序吧~!
    class NewParent{ 
    static int hoursofSleep=2;
    static{ 
    System.out.println("NewParent was initialized."); 
         } 

    class Example2{ 
    public static void main(String[] args){ 
    int hours=NewParent.hoursofSleep; System.out.println(hours); 
    }static{ 
    System.out.println("Example2 was initialized."); 
         } 
    }
      

  2.   

    先加载主类Example2,包括执行其static初始化和static块代码,这里包括System.out.println("Example2 was initialized."); 之后int hours=NewParent.hoursofSleep; //这里加载了NewParent类,也就是执行了
    static{ 
    System.out.println("NewParent was initialized."); 
         } 
    }
    这个代码
      

  3.   

    想这种问题,你搞不清楚,你可以debug,看看它的运行步骤。----------------------------------------------------------------
                     Quietly through ....