在Java中,当我们只声明类类型的变量时,只创建一个引用(不为该对象分配内存)。是否在堆上创建了某个空间的引用?或者如果我错了,那么当我们宣布变量时,内存中究竟会发生什么?
Test t;
答案 0 :(得分:8)
在Java中,当我们只声明一个类类型的变量时,只创建一个引用(没有为该对象分配内存)。
这是正确的。
是否将引用t保存在堆上创建空间?
答案取决于声明出现的背景。如果所述声明是对象的一部分(即t
是字段),那么将从堆中分配引用空间以及对象其余部分的空间包含该字段。否则,引用空间将在JVM的堆栈帧中分配。
答案 1 :(得分:0)
声明变量时:
Test t;
空间用于参考(固定金额,不取决于班级中的成员数量)。 实例化变量时,使用 new 关键字:
t = new Test();
然后在堆上创建变量的空间,t
引用该空间。这必须足够大,以容纳Test
的所有成员。