2017-02-09 40 views
-1

我想下面的程序该差异数数时数在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 ,当我通过改变计数变量试试这个非静态,则'计数数量为1'。

任何人都可以请帮我理解这一点吗?

+0

你可以看看[这个](http://stackoverflow.com/questions/413898/what-does-the-static-keyword-do-in-a-class)问题的答案。 – sazzad

回答

1

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

如果你没有得到它看this post作为另一种解释。