class Book
{
boolean checkedout = false ;
Book(boolean checkedout)
{
checkedout=checkedout;
}
void checkin()
{
checkedout=false;
}
public void finalize()
{
if(checkedout)
{
System.out.println("Error: checkedout");
}
}
}
public class finalize
{
public static void main(String []args)
{
/*Book novel = new Book(true);
novel.checkin();*/
new Book(true)/*.finalize()*/;
System.gc();
System.out.println("Program is running here");
}
}
为什么程序没有打印出Error: checkedout并且请答人详细介绍一下有关垃圾处理器和finalize()的内部关系
{
boolean checkedout = false ;
Book(boolean checkedout)
{
checkedout=checkedout;
}
void checkin()
{
checkedout=false;
}
public void finalize()
{
if(checkedout)
{
System.out.println("Error: checkedout");
}
}
}
public class finalize
{
public static void main(String []args)
{
/*Book novel = new Book(true);
novel.checkin();*/
new Book(true)/*.finalize()*/;
System.gc();
System.out.println("Program is running here");
}
}
为什么程序没有打印出Error: checkedout并且请答人详细介绍一下有关垃圾处理器和finalize()的内部关系
{
this.checkedout=checkedout;//你本来的赋值语句是错误的.没有给this.checkout赋值
}
{
checkedout=checkedout; //这一句有问题
}估计楼主的目的是给成员变量赋值,应该写成this.checkedout = checkedout;
你写的相当于都是在引用方法的参数。没有给成员变量赋值
但是
// Book novel = new Book(true); System.gc();此时没有调用 finalize();
//new Book(true);System.gc();确调用 finalize();
这是为什么啊
此时,对象new Book并不是一个gabage为什么要回收呢
写成:
this.checkedout=checkedout;
我也是初学者 希望对搂主有帮助
因为GC之前会调用这个对象的finalize()释放资源
下次GC时才回收内存