大牛们好,上周面试的时候遇到一个问题:
构造函数在哪个阶段执行?我的回答是初始化阶段,面试官说我说错了,应该是解析时,回来又看了一下加载过程,感觉还是初始化阶段。请指教下,谢谢。

解决方案 »

  1.   


    jvm加载阶段,连接中分为验证,准备,解析
      

  2.   


    静态的初始化应该从解析开始把?只是全部初始化为0值加载阶段完成以后就会在方法区为class对象分配内存,把字节码转换成可以存储在方法区的对象
      

  3.   


    静态的初始化应该从解析开始把?只是全部初始化为0值加载阶段完成以后就会在方法区为class对象分配内存,把字节码转换成可以存储在方法区的对象加载过程只是将字节码通过index指向的info加载到方法区连接和初始化才把符号引用转化为直接引用,与内存布局相关联。。
      

  4.   

    我认为你说的解析是就是实例的时候,初始化是加载的时候JVM加载的时候会加载静态块,而构造方法却是在实例的时候才会被执行可以参看下面的文章后半部写的。希望能够帮到你http://blog.csdn.net/dietime1943/article/details/52882855
      

  5.   


    JVM载入类时会执行static块,创建一个实例时会运行构造方法。static块和static成员变量都是属于类而非实例的;构造函数和普通成员变量是属于一个实例的。类的初始化(包括static块的运行和static成员变量的赋值)只运行一次,多次创建某个类的实例只会运行一次该类的static{}块,但会运行多次其构造函数。