繁体   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