[英]Confused about how object references work in Java
我很困惑對象引用如何工作,並想知道是否有人可以提供幫助。 下面是一些示例代碼,它應該基於一般情況的鏈表來deQueue隊列:
Object head = listHead.datum;
listHead = listHead.next;
return head;
我的理解是,當你有一個原始變量時,存儲的實際值被賦給它,但如果變量是一個對象,那么對象的引用就存儲在那里。 所以在上面的代碼中,對listHead.datum的引用存儲在head中,但是listHead中存儲的引用被更改為listHead.next。 當返回名為head的Object時,我會認為它將遵循它的指定引用,即轉到listHead(現在指的是不同的地方),然后轉到datum。
上面的代碼應該返回隊列的頭部,但是按照我的邏輯,它將返回隊列中的第二個。 我哪里錯了?
當listHead
更改時, head
引用不會動態更新。 實際上,沒有對象引用具有動態分辨率。 必須通過直接分配明確更改引用。 這是實現您的想法的唯一途徑:
Object head = listHead.datum;
listHead = listHead.next;
// Only direct assignment can change the object that head points to
head = listHead.datum;
return head;
我們有:
Object head = listHead.datum;
listHead = listHead.next;
return head;
這里有很多參考資料:
listHead
是一個參考 head
是參考 listHead.datum
是一個引用 listHead.next
是一個參考 有兩個實際的對象實例被引用:
datum
引用(讓我們稱之為實例D
) next
引用(讓我們稱之為實例N
) 事情就是這樣。
listHead.datum
有對D
的引用 listHead.next
引用了N
head
是指D
N
的引用(注意head
沒有改變) head
仍然引用D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.