当前页面: 开发资料首页 → J2SE 专题 → List.add(object)加入的只是一个引用么?如果加入的object被释放,List相应位置是否为null?
List.add(object)加入的只是一个引用么?如果加入的object被释放,List相应位置是否为null?
摘要: List.add(object)加入的只是一个引用么?如果加入的object被释放,List相应位置是否为null?
如果不是null,该如何判断该object已经被释放?
gc应该不会把这种对象释放掉
写这样一个测试程序:
import java.util.*;
class Box {
int width;
int height;
}
class Test {
public static void main(String[] args){
Box b1=new Box();
b1.width=100;
Box b2=b1;
List l=new Vector();
l.add(b1);
l.add(b2);
b1=null;
System.out.println(((Box)l.get(0)).width);
System.out.println(((Box)l.get(0))==b1);
}
}
输出:
100
false
因此,加入的只是一个对象引用。
如果加入的对象被赋值为null,List中相应位置保持不变(不为null)。
但是,还有一个问题:
你说的object被释放,没有弄清楚是什么意思?
楼上: 对象比较应该用equals();
最后一行应该这样写: System.out.println(((Box)l.get(0)).equals(b1)); 虽然b1已经为null.