我想对一个二维的引用类型初始化,代码如下:
Class[][]t = new Class[10][10];
for(int i = 0;i != 10;i++)
{
for(int n = 0;n != 10;n++)
{
Class object = new Class();
t[i][n] = object;//问题在于每次循环赋给数组的都是同一个引用object,我想每个数组项都对应一块内存,也就是说不同的引用,我现在想赋给t之后把object这个引用释放掉,但不释放object所指的内存,不知有什么好方法,或者采用其他的完全不同的方法?
}
}
谢谢
------解决方案--------------------
LZ你这样做就可以了,object每次都是=new出来的对象,给t赋值后,t也指向了object指向的对象,下一个循环,object指向了另一个对象,是不影响之前赋值的t的
就比如说,我在看这个网页(我相当于object),LZ在看我看的网页(LZ相当于t),我换了一个网页(object指向新的对象),但是LZ看的网页是不变的(因为我是我,你是你)
所以LZ的本身就没问题,2L的方法是减少临时变量,但是结果是一样的
------解决方案--------------------
你写的代码已经达到了你的要求,为什么不自己运行试试看呢?
------解决方案--------------------
object的作用域只在循环内,循环退出后,object引用就会被释放了,而t的作用域在整个循环外面,所以t还会继续保持对应每一个object的的应用。