有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在读别人的密码。它是关于获取输入的数字并将这些数字转换成一个链表。代码的部分如下所示:

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

首先,我们需要创建一个head节点来指示head,并让head像这样为null

我有限的java经验告诉我head应该是一个节点类型的对象。那么为什么我们可以使用Node head = null而不实例化head

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

有人能给我解释一下吗


共 (2) 个答案

  1. # 1 楼答案

    head is supposed to be a Node type object here

    这是可选的。Java允许head成为Node对象,或者null,以指示head根本没有引用任何节点

    null的值在Java中是特殊的。它被允许去任何物体能去的地方。它表示分配给null的变量为空。这很好,假设程序的其余部分处理空检查

  2. # 2 楼答案

    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块,该块将查找列表的末尾并添加另一个节点