Java 为什么可以';我是否将ListNode设置为null,指向它,然后定义它?
这只打印出“0”,我希望它打印出“01” 然而,这打印出“012” 为什么我不能设置node=null,然后将其初始化为打印“01” 执行此操作的正确约定/代码是什么?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
我想在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);