gpt4 book ai didi

java - Java中的Constructor是这样分配内存的吗?

转载 作者:行者123 更新时间:2023-12-01 04:44:19 25 4
gpt4 key购买 nike

创建对象后自动调用默认构造函数。

但在 Java 中,当我们使用 new 运算符分配内存时,即 classname obj = new classname(); 构造函数会在 new 分配内存 给类成员的之前自动调用。

分配在类物理存在后开始,但如果 new 运算符在调用默认构造函数后完成其过程,那么默认构造函数实际上是如何完成的,因为类尚未物理存在?

谁能用一个清楚的例子向我解释一下?

最佳答案

过程基本上是:

  • 分配内存
  • 执行 构造函数链(即所有 this/super 调用其他构造函数)每个级别评估任何参数到该级别以上,仅此而已
  • 执行向下实际构造函数主体的构造函数链。所以java.lang.Object构造函数的主体首先被执行,然后是直接子类等等。这也是在执行变量初始化器的时候。 (在此之前,变量的默认值为 null 等)
  • 引用返回给调用 new 的人

默认构造函数的概念在执行时没有任何意义。就 JVM 而言,它只是一个调用 super() 的无参数构造函数。

关于构造函数链的业务与如果这些方法的第一行只是链接到下一个构造函数的情况完全相同;这只是一堆调用。

关于java - Java中的Constructor是这样分配内存的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5125600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com