Java 为什么可以';我是否将ListNode设置为null,指向它,然后定义它?

Java 为什么可以';我是否将ListNode设置为null,指向它,然后定义它?,java,linked-list,Java,Linked List,这只打印出“0”,我希望它打印出“01” 然而,这打印出“012” 为什么我不能设置node=null,然后将其初始化为打印“01” 执行此操作的正确约定/代码是什么? 我想在fakehead上创建新节点。下一步?当您首先将node设置为null并使fakehead.next=node,然后fakehead.next指向null。由于没有为节点分配空间,当编译器执行此语句“node=new ListNode(1);”它为节点分配了一个新内存。但由于您在初始化fakehead之前已使fakehea

这只打印出“0”,我希望它打印出“01”

然而,这打印出“012”

为什么我不能设置node=null,然后将其初始化为打印“01”

执行此操作的正确约定/代码是什么?
我想在fakehead上创建新节点。下一步?

当您首先将node设置为null并使fakehead.next=node,然后fakehead.next指向null。由于没有为节点分配空间,当编译器执行此语句“node=new ListNode(1);”它为节点分配了一个新内存。但由于您在初始化fakehead之前已使fakehead指向它,fakehead.next仍将仅指向null。这就是为什么您只得到0作为输出的原因


而在第二种情况下,fakehead.next=node是在节点初始化和定位之后执行的,因此在这种情况下它可以正常工作。

当您将
node
设置为等于
null
时,就像扔掉
node
指向的引用一样,当您将
节点
设置为等于一个新的
节点
时,您将丢弃对
节点
先前指向的内容的引用。你应该阅读一本涵盖
LinkedList
和其他数据结构的书,或者参加一门课程。在提出问题之前,你应该努力找到答案。很明显,缺少了努力。可能重复读取对象和对象引用之间的差异。变量
节点
不是对象本身,而是对对象的引用。如果更改引用
节点
,则这对先前使用的
节点
没有任何影响。
    ListNode fakehead = new ListNode(0);
    ListNode node = null;
    fakehead.next = node;
    node = new ListNode(1);
    ListNode fakehead = new ListNode(0);
    ListNode node = new ListNode(1);
    fakehead.next = node;
    node.next = new ListNode(2);