首页 > 解决方案 > Java,为什么不自引用类分配无限内存?

问题描述

我正在学习单链表。在下面我提供的示例的第 5 行,是一个调用自引用类的示例。我觉得分配了无限量,next因为当 Java 编译器评估 的大小时Node,它递归地越过第 5 行,以确定要为 分配多少内存Node。我对第 5 行有什么误解。

你能解释自引用类吗?

next为变量分配了多少内存?

为什么第 5 行有效?我认为无限递归循环是无效的。

自我参照类

标签: javalinked-listself-referenceclass-reference

解决方案


您在构造函数中分配给“next”的是另一个对象“n”(在本例中为另一个节点)的内存地址。

对象变量只是指向内存堆中真实对象的引用(RAM 中为 JVM 分配的一个段)。

从概念上讲,您可以将其推理为一个坐标,一个数字。还认为'n'可能是'null',这意味着next现在不会引用任何对象。

为了继续帮助您理清思路,您正在创建的是一个“实例”,其中包含对同一类的另一个“实例”的引用。


推荐阅读