package text; public class show { public static int i=0; { i++; } show(){} public static void many() { System.out.println("目前已创建对象个数为:"+i); } public static void main(String[] args) { show a=new show(); show b=new show(); show c=b;//运行后答案还是创建了两个对象,说明只是为对象b起了另一个名字 many(); } }
结果:
目前已创建对象个数为:2
多创建1个对象后,得到的答案:
package text; public class show { public static int i=0; { i++; } show(){} public static void many() { System.out.println("目前已创建对象个数为:"+i); } public static void main(String[] args) { show a=new show(); show b=new show(); show d=new show(); show c=b;//运行后答案还是创建了两个对象,说明只是为对象b起了另一个名字 many(); } }
结果:
目前已创建对象个数为:3
总结:
每次创建对象时,都会调用构造函数,而在调用构造函数之前,必会先运行非静态初始化块,所以可以通过非静态初始化块中的变量+1达到跟踪创建对象个数的目标。