大家好,我对一个非常常见的java概念感到困惑。 说,“A”是一个类,所以当编译器到达语句new A();会发生两件事
我正在寻找的唯一一点(困惑)是“执行顺序是什么?”
在创建对象之前调用构造函数调用或构造函数之前,会发生对象创建吗?
答案 0 :(得分:2)
当语句A = new A()被调用时;
JVM搜索类A,如果类加载器尚未加载类A,则加载类A.此时调用类A中的static {}块。
然后分配内存(它是指你的“对象创建”吗?)
然后调用构造函数。 (正在运行的构造函数)
答案 1 :(得分:1)
执行过程是 -
答案 2 :(得分:0)
在单线程应用程序中,序列将是: 1)由类加载器加载的类(这里是所有静态初始化) 2)创建了类实例 3)返回并分配此实例的指针,之后返回控件。
在多线程环境中,事情并非如此简单,在列表竞争条件下确实很重要。
答案 3 :(得分:0)
在逻辑对象创建期间,在实例上调用构造函数
所以内存是保留和填充的,后一部分是由contstructor完成的
当然,所有这些都是在创建了类实例之后
如果你的类属于一个类层次结构,它会变得更复杂,因为构造函数在被调用时会调用它的超类构造函数。
答案 4 :(得分:0)
好的,得到了答案的人。谢谢。将点编译为: