当前位置: 代码迷 >> Eclipse >> 一个简单的java有关问题
  详细解决方案

一个简单的java有关问题

热度:86   发布时间:2016-04-23 13:27:04.0
一个简单的java问题
我想对一个二维的引用类型初始化,代码如下:
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的的应用。