静态代码块,构造代码块,局部代码块演示

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);
   }
}

  

原文地址:https://www.cnblogs.com/hujunzheng/p/3872815.html