index 这里输出的结果 解释一下

来源:百度知道 编辑:UC知道 时间:2024/04/28 18:12:21
class Garbage
{
int index;
static int count;
Garbage()
{
count++;
System.out.println("object "+count+" construct");
setID(count);
}

void setID(int id)
{
index=id;
}

protected void finalize()
{
System.out.println("object "+index+" is reclaimed");
}

public static void main(String[] args)
{
new Garbage();
new Garbage();
new Garbage();
new Garbage();
System.gc();
}
}
index 这里为什么会保存着id的内容 不是会覆盖掉吗 应该index出来只有一个值

object 1 construct
object 2 construct
object 3 construct
object 4 construct
object 4 is reclaimed
object 3 is reclaimed
object 2 is reclaimed
object 1 is reclaimed
运行结果是上述这样的。
其实就是一个构造和析构顺序的问题,
构造的时候count的逐个增加的,count的值赋给了每一个对象的indix。
这里需要注意的是每一个对象的indix是独立的,而count由于是static 的,所以所有的对象公用一个,会累加。
这样就得到了前4行的结果。
由于析构的顺序是后构造出来的先析构(类似栈),所以是从4到1.

index 是标示 new出来的4个对象的索引 调用gc方法之后 方便观察 那个对象被回收了 还有先后顺序