'new' operator 使用构造函数初始化内存时,JVM 做了什么?
What does the JVM do when 'new' operator initializes the memory using the constructor?
RealEstate v = new RealEstate();
我在 RealEstate()
中使用了这个 new
关键字。我知道 new
使用 RealEstate
class 构造函数分配内存并初始化内存。
JVM 在这里做什么?
new
运算符实际上并不使用构造函数的帮助来分配内存。它与构造函数无关。 Basically Java's version of malloc
is new
.
new
运算符:
- 为对象分配内存
- 调用对象构造函数
- returns 引用那段记忆
构造函数单独执行以执行初始化期间的任何操作,例如为对象和变量分配值。如果没有定义构造函数,那么编译器将创建默认构造函数并分配默认值:
下表总结了几种数据类型的默认值。
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
运算符仅分配内存和 returns 对该内存的引用。
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.
RealEstate v = new RealEstate();
我在 RealEstate()
中使用了这个 new
关键字。我知道 new
使用 RealEstate
class 构造函数分配内存并初始化内存。
JVM 在这里做什么?
new
运算符实际上并不使用构造函数的帮助来分配内存。它与构造函数无关。 Basically Java's version of malloc
is new
.
new
运算符:
- 为对象分配内存
- 调用对象构造函数
- returns 引用那段记忆
构造函数单独执行以执行初始化期间的任何操作,例如为对象和变量分配值。如果没有定义构造函数,那么编译器将创建默认构造函数并分配默认值:
下表总结了几种数据类型的默认值。 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
运算符仅分配内存和 returns 对该内存的引用。
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.