将数组分配给Java中的另一个数组会发生什么?
来源:爱站网时间:2021-11-13编辑:网友分享
将数组分配给Java中的另一个数组会发生什么?爱站技术小编今天就试了一试,发现颇有意思,也很有参考价值,希望能给到大家一定的启发。
问题描述
我这里有一些Java代码,我正在为ArrayList创建一个ADT(我知道Java框架有一个ADT,但是我只想看看它的底层是什么)。在这里,我正在创建一个将数组大小加倍的方法。
我的问题是,当我执行oldArray = newArray时,内存中会发生什么。我的猜测是,指向oldArray的变量现在指向新数组。但是现在,在内存中,这是否意味着有2个变量指向新数组?并且由于没有对旧数组的引用,垃圾收集器会从内存中删除旧数组吗?
public void resize(int newCapacity) {
E[] newData = (E[]) new Object[2*data.length];
for(int i=0; i
思路:
newData
和data
都是您创建的对象的引用,它们位于堆栈内存中,根据执行路径到达作用域末尾时将删除垃圾收集器每个引用的工作方式, ,在删除了两个引用之后,垃圾将进入堆,以查找没有引用的对象,然后将删除对象。
以上内容就是爱站技术频道小编为大家分享的将数组分配给Java中的另一个数组会发生什么?看完以上分享之后,大家应该都知道会发生什么了吧。