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

时间:2017-02-09 14:50:52

标签: java static non-static members

我正在尝试以下程序

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'。

有人可以帮我理解这个吗?

1 个答案:

答案 0 :(得分:1)

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

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