我写了个程序:
//Test.java
class A
{
A(){
System.out.println("OK");
}
}class B
{
static A a=new A();
}public class Test
{
Test()
{
System.out.println("Test");
}public static void main(String[] args) 
{}
static B b=new B();}请问为什么执行后,输出“OK”,却不输出“Test”?

解决方案 »

  1.   

    没有实例化类Test,只有加载了它,故只运行static部分
      

  2.   

    Test没有被new,所以JVM只会调用之中的main方法,而调用main方法就将含有main方法的类加载到内存然后解释后给CPU运行啊。构造方法只是会在new时被调用的(注意,如果有继承关系,new子类对象的时候,也会调用父类的构造函数,你可以做个例子看看)。
      

  3.   

    你的程序在main()方法中没有实例化类Test,所以不会输出Test,而它会加载静态变量,此时调用了类B,在类中又实例化了类A,所以会输出"OK".