gpt4 book ai didi

java - 根据类大小创建对象的内存分配量

转载 作者:行者123 更新时间:2023-12-01 17:15:13 25 4
gpt4 key购买 nike

计算机如何知道为一个对象分配多少内存(基于类的不同大小)?下面是一个示例。

public class Point(){
public int x;
public int y;
public Point(int x, int y){
this.x = x;
this.y = y;
}
}

Point x = new Point();

通过“new”关键字先为新对象分配内存,然后调用类的构造函数,在调用构造函数之前,计算机如何知道为新创建的对象分配多少内存?

最佳答案

尝试写评论,但太长了。

这一行:

Point x = new Point();

可以分为三个部分:

  1. 变量声明:点x
  2. 赋值:=
  3. 对象实例化:new Point()

第 3 部分(对象实例化)导致内存分配和实例初始化。只有第 3 部分定义了要分配的对象(new Point()new Circle() 等)。由于运行时知道类型,因此它可以计算所需的内存量。

第 1 部分(变量声明)只是告诉代码的其余部分,它如何访问新分配的对象,因此,赋值运算符 = 左侧和右侧的类型可能不同。

如果PointCircle都继承同一个基类Drawing,那么在C#中你可以这样写:

Drawing x = new Point();

由于new Point(),此示例仍然分配点,但其余代码只能使用该点作为基类实例,Drawing,例如:

x.Draw();

并且不能将其用作Point而不进行强制转换:

x.x = 100; // compile time error

关于java - 根据类大小创建对象的内存分配量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61402634/

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