作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习链表是如何工作的,但我无法理解一些简单的东西,比如 Node.next 是如何工作的,我认为问题是我不明白 java 中的引用是如何工作的。
public class Node {
int date;
Node next; //This line i don't understand, what are we doing when we declare class type inside the same class
}
但还有:
public class SinglyLinkedList {
private Node first; //What is the difference between this line and the line in the class Node?
最佳答案
Node next;
您可以将其称为前向引用。它告诉您该类 Node
的实例有一个引用,它可以指向另一个 Node 实例。
当然,最初该引用将为空(不指向另一个Node
)。但是,当您开始构建节点列表时,它会通过一个节点...链接到下一个节点,通过将该字段值从 null 更改为指向该类的某个实例。这就是简单链表的工作原理:从单个根节点开始,向列表添加注释意味着:更新此类 next
字段。
从这个角度来看,上面两个类之间没有“真正”的区别。你也可以去:
Node firstNode = new Node(5);
Node secondNode = new Node(42);
firstNode.next = secondNode;
拥有一个带有 first
字段的不同类的要点是出于概念原因:第二个类“告诉”读者:“我的目的是包含列表的第一个 Node 对象” 。
您可以转here有关类、对象和引用的更广泛的解释。
注意:这里真正关键的一点是,默认情况下,当您执行 new Node()
调用时,该字段 next
以 开头空
。
关于java - 我不明白 Node.next 是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57935627/
我是一名优秀的程序员,十分优秀!