java - 类名如何用作数据类型?
问题描述
public class node {
int data;
node next;
node(int data){
this.data = data;
}
}
这是我在网上看到的一个链表类。我不确定它接下来如何使用节点。
例如, intdata
正在创建类型为 的变量数据int
。但是然后node next
创建一个名为 next 类型为 node 的变量吗?但我认为没有节点这样的类型。
有人可以向我解释一下吗?
感谢您的时间。
解决方案
如果我们使用正确的样式,这会更清楚一点:
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
。并且该字段包含对对象的引用,而不是对象本身。
(术语中的这些小区别实际上对于理解真正发生的事情很重要。)