【发布时间】:2021-08-18 10:16:24
【问题描述】:
我正在学习单链表。在下面我提供的示例的第 5 行,是一个调用自引用类的示例。我觉得分配给next 的数量是无限的,因为当Java 编译器评估Node 的大小时,它会递归地遍历第5 行,以确定要为Node 分配多少内存。我对第 5 行有什么误解。
你能解释一下自引用类吗?
为next 变量分配了多少内存?
为什么第 5 行有效?我认为无限递归循环是无效的。
【问题讨论】:
-
请记住,
next是对堆上对象的引用,而不是实际对象本身。 -
第 5 行没有 call。有一个包含类型(节点)和标识符的声明。它会创建一个嵌套节点吗?不,直到
setNext()被调用。当这种情况发生时,正如 Slaw 所指出的,它只是对现有对象的引用。 -
想象一所房子,上面有一张纸,上面有地址。那张纸是对另一所房子的参考。第一间房子是否需要无限大才能存放这张纸?不。另请注意,这张纸可能是空白的 - 一个空引用。
标签: java linked-list self-reference class-reference