1、对象的初始化(1)非静态对象的初始化
在创建对象时,对象所在类的所有数据成员会首先进行初始化。
基本类型:int型,初始化为0。
如果为对象:这些对象会按顺序初始化。
※在所有类成员初始化完成之后,才调用本类的构造方法创建对象。
构造方法的作用就是初始化。(2)静态对象的初始化
程序中主类的静态变量会在main方法执行前初始化。
不仅第一次创建对象时,类中的所有静态变量都初始化,并且第一次访问某类(注意此时未创建此类对象)的静态对象时,所有的静态变量也要按它们在类中的顺序初始化。2、继承时,对象的初始化过程(1)主类的超类由高到低按顺序初始化静态成员,无论静态成员是否为private。
(2)主类静态成员的初始化。
(3)主类的超类由高到低进行默认构造方法的调用。注意,在调用每一个超类的默认构造方法前,先进行对此超类进行非静态对象的初始化。
(4)主类非静态成员的初始化。
(5)调用主类的构造方法。

解决方案 »

  1.   

    1、首先类加载器加载.class文件。
    2、然后完成static初始化,如果有。
    3、为对象分配内存空间
    4、将分配的内存空间清零
    5、初始化类字段(数据成员)。按照定义的顺序依次初始化
    6、调用构造器的方法
      

  2.   

    《Thinking in java》里面的吧。
      

  3.   

    应该不是Thinking in java里的,那书里貌似没有从高到低这种说法
      

  4.   


    这是我的博文 地址:http://blog.csdn.net/zs312979674/article/details/6816375 大家互相学习学习下子
      

  5.   

    只要弄清了<init>和<clinit>两个方法就一切了然了