java - 在 Java 中逆转链表混淆
问题描述
在 Java 中反转链表时,我很难理解特定的代码行。这是方法:
public static ListNode reverseList(ListNode head)
{
ListNode prev = null;
while(head != null)
{
ListNode nextNode = head.next;
head.next = prev;
prev = head;
head = nextNode;
}
return prev;
}
我遇到的问题是线路head.next = prev;
。发生这种情况时,我假设 nextNode 的值也会发生变化,因为它也指向 head.next。但是,它保持不变。我知道这与对象引用有关,但我不确定。
这让我很困惑,因为如果我通过将一个对象指向另一个对象来创建 2 个 ListNode 对象,如下所示:
ListNode test = new ListNode(5);
ListNode test2 = test;
并修改'test'对象的val并从'test2'打印出来,我得到相同的确切值,如下所示:
test.val = 8;
System.out.println(test2.val); // this also prints out 8
解决方案
推荐阅读
- react-native - React Native 项目,有时使用 expo start 获得“连接 ECONNREFUSED 127.0.0.1:19001”
- javascript - 在函数中插入变量
- php - 如何使用 JavaScript 从服务器获取数据?(第一次将后端添加到 React 应用程序)
- excel - VBA根据单元格的定义名称设置单元格值
- javascript - 如何有效地将大文件加载到 IndexedDB 存储中?我的应用程序在超过 100,000 行时崩溃
- c# - MVVM wpf:如何连接我之前制作的 ObservableCollection 遇到 ViewModel
- algorithm - 我们真的需要在约翰逊算法中添加一个额外的节点吗?
- c++ - 这是一种什么样的说法?(第6章,使用C++的原理与实践)
- java - 在java中使用String builder反转数字
- solr - 无需搜索即可从 Solr 读取所有文档(仅在可能的情况下使用文档 ID)