在 Java 中计数为静态和非静态时的计数差异

Difference in the number of count when count is static and non static in Java

我正在尝试下面的程序

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 当我通过将计数变量更改为非静态来尝试此操作时 'number of count is 1'.

谁能帮我理解一下?

静态意味着计数器将在 Car1 class 的所有实例之间共享。 另一方面,如果您不使用静态计数器,则 Car class 的每个实例(每次您执行 new Car1(...))都会有自己的计数器。它不是共享的。 因此,您只会打印实例 c1 的计数器。

如果您不明白,请查看 this post 以获取其他解释。