【问题标题】:Memory allocation is done before first line of constructor execution or after constructor execution - Java [duplicate]内存分配在构造函数执行的第一行之前或构造函数执行之后完成 - Java [重复]
【发布时间】:2020-07-22 15:46:45
【问题描述】:
Student student = new Student();

在上面的代码中,我们创建了一个Student类对象,即JVM在构造函数执行的第一行之前或构造函数执行之后,甚至在父类之后分配内存?

【问题讨论】:

标签: java memory-management jvm object-create


【解决方案1】:

当声明类类型的变量时,只会创建一个引用。仅当使用 new() 关键字初始化所述变量时才分配内存(在堆中)。如果您使用的是 Netbeans,您应该能够使用 NetBeans 分析器检查内存读/写操作,尽管我猜大多数 IDE 都包含类似的工具。 内存是在构造函数内部分配的第一件事,而不是最后。

【讨论】:

  • 根据您的编辑,这是不正确的。也许删除你答案的不正确部分?
  • 没有。分配内存,然后运行构造函数。
【解决方案2】:

简单来说就是在构造函数之前分配

你的代码也可以这样写:

Student student;
student = new Student();

这意味着当变量student被声明时,它在第一行被声明为一个空引用。发生这种情况时,内存会为 student 分配一个空间,将其声明为 Student 类型的变量作为引用,直到初始化为可用变量。

【讨论】:

    猜你喜欢
    • 2019-06-30
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 2018-04-11
    • 1970-01-01
    相关资源
    最近更新 更多