站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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.


↑返回目录
前一篇: 为什么“.”不能做为分隔符?
后一篇: 用JAVA实现基于组播的屏幕共享,可行吗?