解决方案 »

  1.   

    谈谈个人的理解。我觉得编译器干的事就是语法检查,然后把java文件编译成jvm可执行的字节码文件。然后当程序被运行时,步骤是这样的,字节码(字节码也是按一定规则拆分存放的,如常量池,访问标识,接口,方法域等)会被加载到内存(像类的全限定名,类型,常量池等会被存到方法区),然后执行程序时jvm会先启动main线程,接着就是一行行执行程序,当执行到new时,会在队中开辟一个对象空间,默认初始值为空或者0等(要看数据类型,如int 就是初始化为0),然后执行构造函数,构造函数会将参数传到对象的堆空间,给里面的实例域赋初值。
      

  2.   

    这不是 自己写的构造, 是编译器添加的构造,  初始化变量默认值如 int i=6; 先int i=0 在 i=6
      

  3.   

    new关键字创建对象:1)为对象分配内存空间,将对象的实例变量自动初始化为其变量类型的默认值
    2)如果实例变量在声明时被显示初始化,那就把初始化值赋给实例变量
    3)调用构造方法,显示初始值
    4)返回对象的引用(把指针给对象名)
      

  4.   

    <深入Java虚拟机>去看类加载机制就明白了