簡體   English   中英

Java,當你做object = object時內部發生了什么?

[英]Java, what is happening internally when you do object = object?

我在Java中實現單鏈表,我有一個問題。 除了和刪除節點之外,很多人都使用這樣的臨時節點:

public Object removeFirst() {
   Node temp = head;
   head = temp.next;
   Object returnData = temp.data;
   temp = null;
   size--;
   return returnData;
}

為什么這個臨時節點是必要的? 乍一看,我認為為了刪除第一個元素我必須做的就是將第二個元素更改為頭節點。

所以我的問題是在java中, object= object是什么意思? 繼承每個字段和方法,2個對象是否完全相同?

不需要temp head變量不再引用該Node ,它用於獲取已刪除Node的數據,但可以在沒有它的情況下完成:

public Object removeFirst() 
{
    Object returnData = head.data;
    head = head.next;
    size--;
    return returnData;
}

object = object是什么意思?

一個類提供對象的藍圖; 你從一個類創建一個對象。

new運算符返回對其創建的對象的引用。 此引用通常分配給適當類型的變量

假設您已創建新的對象

將一個對象復制到另一個對象時,將為該對象創建第二個引用。

Node temp = head;

如果將第二個對象(引用)設置為null,則仍可使用第一個引用( head )訪問此對象。

繼承每個字段和方法,2個對象是否完全相同?

是的,因為只有參考不同但對象是相同的。

您可以在oracle文檔頁面中找到更多詳細信息

  1. 當你沒有創建對象(實例化類)時:

在此輸入圖像描述

  1. 使用new運算符創建對象時:

在此輸入圖像描述

  1. 將對象分配給另一個對象時:

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM