这是一个简短的教程,介绍如何在java中计算一个类的实例/对象的数量。
一个类的对象可以用java中的new关键字来创建,一个对象就是一个类的实例。
一个类可以有多个对象。
在java中如何计算一个类的对象/实例的数量?
静态是全局范围的,可以被一个类的所有对象创建和访问。所以静态成员变量被用来知道数量。
下面是一个逐步的计数指南:
- 在一个类中,创建了一个静态变量(objectCount),所有的对象都可以访问它,这些被称为类范围变量
- objectCount最初被初始化为0
- 静态变量只能由静态成员直接访问。
- 定义了实例块,每当新的对象被创建时,它的值就会增加1
- objectCount在finalize方法中递减,该方法在对象准备进行垃圾收集时被调用。这对计算非垃圾收集的对象很有用。
- 最后用一个类来打印静态成员变量
下面是一个使用实例块的例子
public class Main
{
private static int objectCount = 0;
{
objectCount += 1;
}
public static void main(String[] args) {
Main t1 = new Main();
Main t2 = new Main();
System.out.println("Object Count "+getObjectCount());
}
public static int getObjectCount(){
return objectCount;
}
protected void finalize() throws Throwable{
super.finalize();
objectCount--;
}
}
构造函数有一段代码用于增加对象的数量
使用finalize销毁时,有一段代码用于减少对象的数量。
同样的例子可以用构造器块中的增量objectCount重写。
在这个例子中,静态成员变量在构造函数中被递增,每当新的对象被创建时,构造函数被调用。
public class Main
{
private static int objectCount = 0;
public MyClass() {
objectCount++;
}
public static void main(String[] args) {
Main t1 = new Main();
Main t2 = new Main();
System.out.println("Object Count "+getObjectCount());
}
public static int getObjectCount(){
return objectCount;
}
protected void finalize() throws Throwable{
super.finalize();
objectCount--;
}
}
上述两个程序的输出结果如下
Object Count 2
结论
从上面来看,静态成员变量是类的范围,实例可以通过实例块或构造器的方法来计算。
希望你喜欢这个帖子。