我正在尝试以下程序
class Car1
{
static int count;
Car1()
{
System.out.println("Car instance has been created...");
}
Car1(int arg) {
System.out.println("Car instance has been created...");
}
Car1(double arg) {
System.out.println("Car instance has been created...");
}
Car1(int arg1, double arg2) {
System.out.println("Car instance has been crreated...");
}
{
count++;
}
}
public class MainClass10
{
public static void main(String[] args) {
System.out.println("Program Started");
new Car1(11);
new Car1(11, 12.11);
for (int i = 0; i<9; i++)
{
new Car1();
}
Car1 c1 = new Car1(11.12);
System.out.println("Total number of cars: " + c1.count);
System.out.println("Program Ended");
}
}
计数数量的输出为12 当我通过将计数变量更改为非静态来尝试此操作时,'计数数为1'。
有人可以帮我理解这个吗?
答案 0 :(得分:1)
静态意味着计数器将在Car1
类的所有实例之间共享。
另一方面,如果您不使用静态计数器,Car类的每个实例(每次执行new Car1(...)
)都将拥有自己的计数器。这不是共享的。
因此,您只会打印实例c1的计数器。
如果你不明白,请查看this post以获得其他解释。