为什么我们可以使用Node head = null而不在Java中实例化'head'?

时间:2016-11-03 20:52:59

标签: java linked-list nodes

我在读某人的代码。它是关于获取输入数字并将这些数字转换为链接列表。代码的一部分是这样的:

class Node {
    int value;
    Node next;
    Node() {
        next = null;
    }
}

首先,我们需要创建一个head节点来指示头部,我们让head为空 Node head = null

我对java的有限经验告诉我head应该是这里的Node类型对象。那么为什么我们可以使用Node head = null而无需实例化head

我认为至少我应该创建 Node head = new Node() ;然后我们可以使用 Node head = null ;

任何人都可以向我解释一下吗?

2 个答案:

答案 0 :(得分:1)

  

head应该是这里的Node类型对象

这是可选的。 Java允许headNode对象,或null,表示head根本没有引用任何节点。

null的值在Java中是特殊的。允许它去任何物体可以去的地方。它表示您指定给null的变量为空。假设程序的其余部分处理空检查,这非常好。

答案 1 :(得分:1)

Node head = null;

此行表明链表中没有商品。这在Java中有效,表示尽管head可以包含Node对象(或派生类的对象),但它当前是空的。

要将项目添加到列表中,可能会出现一些代码,例如:

public void addItemToLinkedList(int value) {
    if (head == null) {
        head = new Node();
        head.value = value;
    } else {
        ...
    }
}

因此,如果没有第一个节点(当head等于null时),则创建head。否则,如果head已经存在,则执行else块,该块将查找列表的末尾并添加另一个Node。