我是新来的java。 这个问题可能不太清楚。让我解释一下使用代码。 下面的代码是一个打印出链接列表中的值的函数。 该函数的第一行创建一个引用,以指向HeadNode引用指向的同一个对象。因此,对currentNode的任何更改都会影响HeadNode指向的对象。 现在,在while循环中,我正在改变currentNode,但是我观察到linkedList在我退出函数后没有改变。为什么?如何在不改变函数参数值的函数中创建参考?
static void PrintLinkedList(ListNode HeadNode)
{
ListNode currentNode = HeadNode;
while(currentNode != null)
{
System.out.println(currentNode.getData());
currentNode = currentNode.getNext();
}
}
UPDATE:
把这个quesiton了我的理由是,当我实现了一个函数来扭转链表,我tempNode下面的代码执行后成为空:
static ListNode ReverseLinkedList(ListNode headNode)
{
ListNode headNodeTemp = headNode;
headNodeTemp.setNext(null);
ListNode tempNode = headNode.getNext(); //temp becomes null because headNode is changed. Why??
ListNode currentNode = headNodeTemp;
while(tempNode != null)
{...
但currentNode引用该对象。因此,currentNode中的任何更改都会更改该对象。对? – user1701840
不,''currentNode'只是一个保存对象地址的变量。 'currentNode'的改变改变'currentNode'指向的内容。要改变'currentNode'指向的对象,你必须调用一个方法或设置一个属性。 'currentNode.mutate();'会改变对象。 –
请阅读我的,我希望澄清它。如果没有,请ping我。如果你不想改变对象,你不能调用任何改变它的方法。但我认为这可能是一个问题。 –