Java 为什么我们可以使用Node head=null而不实例化';头部';在爪哇?
我正在读别人的密码。它是关于获取输入的数字并将这些数字转换成一个链表。代码的部分如下所示:Java 为什么我们可以使用Node head=null而不实例化';头部';在爪哇?,java,linked-list,nodes,Java,Linked List,Nodes,我正在读别人的密码。它是关于获取输入的数字并将这些数字转换成一个链表。代码的部分如下所示: class Node { int value; Node next; Node() { next = null; } } 首先,我们需要创建一个head节点来指示head,并让head像这样为null节点head=null 我有限的java经验告诉我,head应该是一个节点类型的对象。那么,为什么我们可以使用Node head=null而不实例化head
class Node {
int value;
Node next;
Node() {
next = null;
}
}
首先,我们需要创建一个head
节点来指示head,并让head
像这样为null节点head=null
我有限的java经验告诉我,head
应该是一个节点类型的对象。那么,为什么我们可以使用Node head=null
而不实例化head
我想至少我应该创建节点头=新节点();然后我们可以使用节点头=null
有人能给我解释一下吗
head
在这里应该是节点类型的对象
这是可选的。Java允许head
成为节点
对象,或null
,以指示head
根本没有引用任何节点
null
的值在Java中是特殊的。它被允许去任何物体可以去的地方。它表示分配给null
的变量为空。这很好,假设程序的其余部分处理空检查
Node head = null;
此行表示链表中没有任何项目。这在Java中是有效的,并表明尽管head可以包含节点
对象(或派生类的对象),但它当前为空
要将项目添加到列表中,可能存在以下代码:
public void addItemToLinkedList(int value) {
if (head == null) {
head = new Node();
head.value = value;
} else {
...
}
}
所以,若并没有第一个节点(head等于null),那个么就创建head。否则,如果head已经存在,则将执行else块,该块将查找列表的结尾并添加另一个节点。在将null
分配给引用之前,为什么需要对象?该分配没有意义,null
是Object
类型字段的默认值。Oracle为类和对象提供了有用的信息和教程。看起来您应该阅读它们,以了解代码的工作方式和原因:。为什么head可以使用节点作为其数据类型而无需实例化?这只是意味着head
可以包含Node
类型的对象(或派生自Node
),但它也可以为空-null表示它为空。把head
想象成一个邮箱。它可以包含字母,也可以是空的;这意味着某人可以包含Node类型的对象。这并不意味着有人是节点对象?是的。除非你说Node someone=new Node()代码>或节点某人=其他人
其中,someone
是一个实例化的节点对象。好的,我明白了。非常感谢Jason,所以如果Java允许head是节点对象,那么tail也可以是节点对象,对吗?上一个和下一个如何,它们是否也可以是节点类型?关于java中的节点对象,我能读到什么文档吗?谢谢。@Jeffery“我能读到关于java中节点对象的任何文档吗”我不这么认为,因为Node
是您自己的类(所以没有其他页面知道它)。但是我已经链接了一个Oracle关于一般类和对象的帮助页面。这也可能对你有所帮助。