构造函数的执行顺序和对象的创建

时间:2014-02-03 14:12:12

标签: java constructor

大家好,我对一个非常常见的java概念感到困惑。 说,“A”是一个类,所以当编译器到达语句new A();会发生两件事

  1. 对象创建(因为新关键字)
  2. 构造函数调用。
  3. 我正在寻找的唯一一点(困惑)是“执行顺序是什么?”

    在创建对象之前调用构造函数调用或构造函数之前,会发生对象创建吗?

5 个答案:

答案 0 :(得分:2)

当语句A = new A()被调用时;

  1. JVM搜索类A,如果类加载器尚未加载类A,则加载类A.此时调用类A中的static {}块。

  2. 然后分配内存(它是指你的“对象创建”吗?)

  3. 然后调用构造函数。 (正在运行的构造函数)

答案 1 :(得分:1)

执行过程是 -

  1. 对象存储器分配为
  2. 初始化具有初始值的字段变量 然后调用构造函数,但其​​代码在对象超类的构造函数代码之后执行。

答案 2 :(得分:0)

在单线程应用程序中,序列将是: 1)由类加载器加载的类(这里是所有静态初始化) 2)创建了类实例 3)返回并分配此实例的指针,之后返回控件。

在多线程环境中,事情并非如此简单,在列表竞争条件下确实很重要。

答案 3 :(得分:0)

在逻辑对象创建期间,在实例上调用构造函数 所以内存是保留和填充的,后一部分是由contstructor完成的
当然,所有这些都是在创建了类实例之后
如果你的类属于一个类层次结构,它会变得更复杂,因为构造函数在被调用时会调用它的超类构造函数。

答案 4 :(得分:0)

好的,得到了​​答案的人。谢谢。将点编译为:

  1. 类加载(使用静态成员)
  2. 对象加载(首先执行IIB,然后分配给NS变量的值)
  3. 由“this”指针调用的构造函数