问题描述
我正在学习单链表。在我下面提供的示例的第 5 行,是调用自引用类的示例。我觉得无限量被分配给 next
,因为当 Java 编译器评估 Node
的大小时,它递归地遍历第 5 行,以确定为 Node
分配多少内存。我对第 5 行有什么误解。
你能解释一下自引用类吗?
有多少内存分配给 next
变量?
为什么第 5 行有效?我认为无限递归循环是无效的。
解决方法
您在构造函数中分配给“next”的是另一个对象“n”(在本例中为另一个节点)的内存地址。
对象变量只是指向内存堆中真实对象的引用(为 JVM 分配的 RAM 中的一个段)。
从概念上讲,您可以将其作为坐标、数字进行推理。还认为 'n' 可能是 'null',这意味着 next 现在不会引用任何对象。
为了帮助您理清思路,您正在创建一个“实例”,其中包含对同一类的另一个“实例”的引用。