簡體   English   中英

當你在java中將一個數組分配給另一個數組時會發生什么?

[英]What happens when you assign an array to another array in java?

我這里有一些 Java 代碼,我正在為 ArrayList 創建一個 ADT(我知道 Java 框架有一個,但我只想看看它下面是什么)。 在這里,我創建了一個使數組大小加倍的方法。

我的問題是,當我執行 oldArray=newArray 時,內存中會發生什么。 我的猜測是指向 oldArray 的變量現在指向新數組。 但是現在,在內存中,這是否意味着有 2 個變量指向新數組? 而且由於沒有對舊數組的引用,垃圾收集器會從內存中刪除舊數組嗎?

public void resize(int newCapacity) {
    E[] newData = (E[]) new Object[2*data.length];

    for(int i=0; i<data.length; i++) {
        newData[i] = data[i];
    }

    data = newData;
}

newDatadata都是您創建的對象的引用,它們位於堆棧內存中,根據垃圾收集器的工作方式,當執行路徑到達作用域結束時,每個引用都會被刪除,在這兩個引用是刪除垃圾進入堆以查看沒有引用的對象,然后將刪除該對象。

暫無
暫無

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

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