java - 'new'操作符使用构造函数初始化内存时JVM做了什么?

标签 java constructor new-operator

RealEstate v = new RealEstate();

我在 RealEstate() 中使用了这个 new 关键字。我知道 new 使用 RealEstate 类构造函数分配内存并初始化内存。

JVM 在这里做什么?

最佳答案

new 运算符实际上并不使用构造函数的帮助来分配内存。它与构造函数无关。 Basically Java's version of malloc is new.

运算符:

  • 为对象分配内存
  • 调用对象构造函数
  • 返回对该内存的引用

构造函数单独执行以执行初始化期间的任何操作,例如为对象和变量分配值。如果没有定义构造函数,那么编译器将创建默认构造函数并分配默认值:


下表总结了几种数据类型的默认值。 source

Data Type   Default Value (for fields)
byte            0
short           0
int             0
long            0L
float           0.0f
double          0.0d
char            '\u0000'
String          null
any object      null
boolean         false

因此,new 运算符仅分配内存并返回对该内存的引用。

参见 documentation :

The new operator instantiates a class by allocating memory for a new object and returning a reference to that memory. The new operator also invokes the object constructor.

关于java - 'new'操作符使用构造函数初始化内存时JVM做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39055264/

相关文章:

java - 如何从在同一个 tomcat 上运行的 Web 应用程序启动/停止应用程序

Java:将 XSD 文件转换为 Java 类

java - 如何捕获 RESTEasy Bean 验证错误?

javascript - 为什么构造函数返回对象,而不是 JavaScript 中的原语?

javascript - Javascript 类中的实例变量

c++ - 构造函数与新的

java - Hibernate,当我使 id 列自动递增时,sql 出现错误

java - 在构造函数中初始化 ArrayList

c++ - 在 C++ 中将 'new' 关键字与结构一起使用

Mysql通过合并多列创建新列并显示结果