Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我们可以使用Node head=null而不实例化';头部';在爪哇?_Java_Linked List_Nodes - Fatal编程技术网

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关于一般类和对象的帮助页面。这也可能对你有所帮助。