sat*_*nam 2 java class linked-list object instance
我正在研究链表.我一次又一次地看到代码在该类的主体中声明了类的数据类型.以下是破解编码访谈(创建链表)一书中的一个例子
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;
}
}
Run Code Online (Sandbox Code Playgroud)
在第二行 - 正如您所看到的,'next'是Node类型的实例变量,是它自己的类.
我的问题是,如果我创建一个Node类的实例(比如X) -
Node X = new Node(10);
Run Code Online (Sandbox Code Playgroud)
书中说,编译器会自动为其实例变量(数据和下一个)保留空间,即使它们没有被启动.(int data = 10)在构造函数中清楚地处理,但接下来会发生什么?在我看来,X将在其中包含无限数量的"下一个"节点,因为X将在其中有一个名为next的节点.然后,因为每个节点都应该有一个数据和下一个部分,然后下一个将拥有自己的数据副本,然后在其中,依此类推......等等...

"下一个"节点只是对Node对象的引用.为该节点的引用保留空间这一事实并不意味着使用子节点创建了一个全新的节点,它只是意味着原始节点有足够的"空间"来存储对另一个节点的引用.由于'next'最初具有null引用,因此在初始化Node并在'next'中存储对它的引用之前,"没有任何内容".
基本上,对节点的引用与节点不同.
有关更多信息,请参阅Oracle有关类型,值和变量的文档.
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |