java - Java,为什么不自引用类分配无限内存?
问题描述
我正在学习单链表。在下面我提供的示例的第 5 行,是一个调用自引用类的示例。我觉得分配了无限量,next
因为当 Java 编译器评估 的大小时Node
,它递归地越过第 5 行,以确定要为 分配多少内存Node
。我对第 5 行有什么误解。
你能解释自引用类吗?
next
为变量分配了多少内存?
为什么第 5 行有效?我认为无限递归循环是无效的。
解决方案
您在构造函数中分配给“next”的是另一个对象“n”(在本例中为另一个节点)的内存地址。
对象变量只是指向内存堆中真实对象的引用(RAM 中为 JVM 分配的一个段)。
从概念上讲,您可以将其推理为一个坐标,一个数字。还认为'n'可能是'null',这意味着next现在不会引用任何对象。
为了继续帮助您理清思路,您正在创建的是一个“实例”,其中包含对同一类的另一个“实例”的引用。
推荐阅读
- java - 有时无法在 webviewclient 上重新加载自定义 URL
- jdbc - 在 log4j2 中打印 intLevel
- dart - 颤动中的导航器错误(抽屉按钮注销)
- python - Get indices from array where element in row satisfies condition
- amazon-web-services - 使用云形成脚本将卷附加到 Windows ec2 实例
- java - 在哪里指定 bean 验证的组序列
- javascript - Javascript 消息传递以填充表
- android - 如何访问 FirebaseRecycler 的 getItemViewType() 中的项目?
- excel - 通过 VBA 折叠每个工作表中的所有组
- typo3 - Typo3 Powermail:带有必填字段的虚假垃圾邮件警报