Java中的实例域初始化在什么时候开始执行的?

解决方案 »

  1.   

    这个问题比较笼统
    域也有分静态和非静态之分.这一类的问题直接在CSDN搜索就一大堆
      

  2.   

    假如以类中分别有一个普通的属性和一个静态属性,同时类中还存在一个static 代码区域,那么这个类的对象的创建过程大致应该是这样:1. 类第一次使用时,动态加载到JVM中。当首次创建该类的对象时,或者类中的静态方法、静态属性域首次被访问时,java解释器查找classPath,定位到类的class文件 2. 载入class文件,生成一个Class类型对象,所有有关的静态初始化动作都会执行,静态代码块,静态成员属性。 并且这种初始化动作只在Class对象首次加载时候进行一次。
     3. 当用new 创建对象时,首先JVM在堆heap上为对象分配足够的存储空间
     4. 存储空间清空,自动将对象中的所有基本类型数据都设置成了默认值,对象引用被设置为null 5. 执行所有在字段定义处的一些初始化操作 6. 调用构造器方法。(没有继承)
      

  3.   

    class a {}
    class b extends a {}
    class c
    {
    public static void mian ( String [] args )
    {
    a a = new b(); //a和b现在开始初始化了
    }
    }
    class d
    {
    public static void mian ( String [] args )
    {
    d d = new d(); //d现在开始初始化了
    }
    }
      

  4.   

    class a {}
    class b extends a {}
    class c
    {
    public static void mian ( String [] args )
    {
    a a = new b(); //a和b现在开始初始化了
    //还有c因为你已经用到C类
    }
    }
    class d
    {
    public static void mian ( String [] args )
    {
    d d = new d(); //d现在开始初始化了
    }
    }