首页 > 解决方案 > 类名如何用作数据类型?

问题描述

public class node {

    int data;
    node next;

    node(int data){
        this.data = data;
    }
}

这是我在网上看到的一个链表类。我不确定它接下来如何使用节点。

例如, intdata正在创建类型为 的变量数据int。但是然后node next创建一个名为 next 类型为 node 的变量吗?但我认为没有节点这样的类型。

有人可以向我解释一下吗?

感谢您的时间。

标签: java

解决方案


如果我们使用正确的样式,这会更清楚一点:

public class Node {
    int data;
    Node next;

    Node (int data) {
        this.data = data;
    }
}

Node是一类。每个Node实例都有一个字段 ( data) 来保存整数值,以及一个字段 ( next) 来保存对另一个Node实例的引用。

(如注释中所述,所有 Java 类都是类型,因此Node next;声明名称为next且类型为的字段也是如此Node。此外,每个Node实例都将具有这些字段中的一个......可以引用另一个Node实例。)

因此,要从Node实例创建链接列表,您可以Node使用(自然)该next字段将一个链接到列表中的下一个。列表中的最后一个Node(通常)null在其next字段中有一个。


但我认为没有节点这样的类型。

每个 Java 类都是一种类型,我们只是将node(或更准确地说Node)定义为 Java 类。

因此,它只是创建了一个名为next. 我对吗?

不完全是。您将创建一个对象(一个Node实例)并将对象的引用next分配给其他Node实例的字段。

该对象未被调用next。它是被称为的领域next。并且该字段包含对对象的引用,而不是对象本身。

(术语中的这些小区别实际上对于理解真正发生的事情很重要。)


推荐阅读