java 虚拟机在什么时候创建对象?在调用静态方法时候创建吗?静态块是在调用构造之前调用的是不?http://www.yesky.com/320/1950320.shtml这里讲的小弟有点不明,{·调用类中声明的静态方法 } 可以创建对象吗?还有哦,在主类里的静态块在执行时可以被调用,但是主类里的构造为什么就不能调用?迷惑中!

解决方案 »

  1.   

    package zll;class Test{
      static int i = 0;
      public Test()
      {
        i=3;
      }
    public static void main(String[] args){
    System.out.println(A.a+""+Test.i);
    }static{
    System.out.println( "initializing Test" );
    }
    }
    class A{
    static final int a = 10;static{
    System.out.println( "initializing A" );
    }
    }那这个怎么输出?
      

  2.   

    对象没有被new出来,怎么叫被装入内存?兄弟
      

  3.   

    答案:
    initializing test
    100
    原因是要搞清楚类初始化和对象初始化,上述代码中没有对象new出来,那么Test类中的构造函数时不会调用的,由于A类中的i是final的,所以不会被认为是主动调用,则不会导致JVM初始化该类,所以Static块的不被执行,
    lz明白拉嘛,要是觉的讲的还可以,请打分。
      

  4.   

    static的不需要new出来。它们在程序装载时即存在于内存中。
    我的BLOG:http://blog.csdn.net/beepbug/
      

  5.   

    在代码行的以下三种情况下创建对象:1 显示的 new Object();
    2 Class.forName("com.xxx.Test");
    3 ClassLoader.loadClass("com.xxx.Test");给分。需要解释你更多的疑问,请参见《深入JAVA虚拟机》