java 值引用,对象引用 的问题,求解释,为什么执行了 clear 方法后,对象,没有变成null

2025-05-21 23:20:59
推荐回答(2个)
回答1:

你对引用传递的理解还是有问题。
你new的Item对象。在进入clear方法后。
一共有三个引用,在引用着这个Item对象
他们是:item、object(方法参数)和list中的数组引用
clear方法执行完以后,object的生命周期结束。
此时还生item和list中的数组引用这两个引用了。
一次循环结束后,下一次循环
item = new Item();
item又指向了其他的item对象。

此时原来的item对象只有list中的数组引用在引用着它了。

所以你的clear方法是没起到任何作用的。即便你不去设置为null
方法结束之后,object的作用范围也已经无效了。

所以真正要把它置为null
必须list.set(i, null);

回答2:

Java的引用和c++的引用不同了。clear里的object只是引用了和list里的同一个对象。object=null;是让object引用为null了。