直奔主题!
今天在看Java编程思想,看到第5章有关垃圾回收这方面的技术.我按照书上代码,自己敲打了一边书中代码.
public class ClassOne {
String status = ""; public ClassOne(String status) {
this.status = status;
} public void setStatus() {
status = "kong";
} public void finalize() {
if (status=="kong") {
System.out.println("It is kong.");
}
}
}
public class Test {
public static void main(String args[]) {
new ClassOne("kong");//各位大哥大姐们,我的问题就在这里.
ClassOne co2=new ClassOne("man");
co2.setStatus();
System.gc();
}
}问题在main方法的第一行注释中,为何我ClassOne co1=new ClassOne("kong");
co1的finalize方法就无法调用呢?而单是new ClassOne("kong");倒是现实出了It is kong...
请各位帮助解答...方便的话给我讲一下垃圾回收机制...通俗语言就更好了...谢谢!

解决方案 »

  1.   

    if (status=="kong") {
    你这不是写着吗,只有条件成立才输出嘛
      

  2.   

    ClassOne co1=new ClassOne("kong");
    这里声明了一个对象,并使用了一个变量去引用它。就是col。
    new ClassOne("kong");这里只是声明了一个对象,但没有变量去引用它。
    当你调用System.gc()的时候,JVM会去判断这些对象到状态,当某个对象不被引用的时候,可能会被垃圾收集机制回收,但不一定。而那些被引用到对象,却不会被回收。。PS:如果是新手,建议先看入门到书籍,最好找那种有图形辅助说明的书。。