我是新來的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我。如果你不想改變對象,你不能調用任何改變它的方法。但我認爲這可能是一個問題。 –