public class Test{
static int num;
static int numObj;//记录有多少个对象产生!
static{//静态代码块, 是用来给类进行初始化的!
//num = 10;
++num;
num *=12;//没有进入静态代码块之前,num的初始化值是0
System.out.println(num);
//main(null);//静态代码块中可以调用main, 想一想也是, 大家都是静态的嘛!
}
//先执行构造代码段, 然后指行构造函数
{//这叫做构造代码段,可以给所有对象进行初始化!每一个对象产生时都会执行!
++numObj;
System.out.println("构造代码段!");
}
public Test(){//在构造方法中进行对象实例的计数
//++numObj;
System.out.println("构造函数!");
}
public void finalize(){//当对象生命周期结束时调用
System.out.println("对象释放!");
--numObj;
}
public static void show(){
System.out.println("创建的实例个数:" + numObj);
}
public static void main(String[] args){
System.out.println("静态代码段是用来初始化类的!");
Test t1 = new Test();
t1.show();
{//局部代码段
new Test();
}
System.gc();//启动垃圾回收器!
new Test();
new Test();
System.out.println(Test.numObj);
}
}