【发布时间】:2014-11-27 18:04:32
【问题描述】:
我正在研究链表。我一次又一次地看到在该类的主体中声明类的数据类型的代码。这是《Cracking the coding interview (create a linked list)》一书中的一个例子
class Node {
Node next = null;
int data;
public Node(int d) { data = d; }
void appendToTail(int d) {
Node end = new Node(d);
Node n = this;
while (n.next != null) { n = n.next; }
n.next = end;
}
}
在第二行 - 正如你所看到的,'next' 是 Node 类型的实例变量,是它自己的类。
我的问题是,如果我创建类节点的实例(比如 X) -
Node X = new Node(10);
书上说编译器会自动为其实例变量(数据和下一个)保留空间,即使它们没有启动。 (int data = 10) 显然是在构造函数中处理的,但是接下来会发生什么?在我看来,X 内部将有无限数量的“下一个”节点,因为 X 内部将有一个名为 next 的节点。然后由于每个节点都应该有一个数据和下一部分,那么下一个将有自己的数据副本和下一个在里面,依此类推……导致这样的事情……
【问题讨论】:
-
下一个引用是
null,这是另一种表示不是值的方式。
标签: java class object linked-list instance