一般来说,静态意味着“与类型本身相关联,而不是类型的实例”。
这意味着你可以引用一个静态变量,而没有创建类型的实例,任何引用该变量的代码都是指完全相同的数据。将它与一个实例变量进行比较:在这种情况下,每个类的实例都有一个独立版本的变量。例如:
Test x = new Test();
Test y = new Test();
x.instanceVariable = 10;
y.instanceVariable = 20;
System.out.println(x.instanceVariable);
打印输出10:y.instanceVariable和x.instanceVariable是分开的,因为x和y指的是不同的对象。
你可以通过引用引用静态成员,虽然这是一个坏主意。如果我们做到:
Test x = new Test();
Test y = new Test();
x.staticVariable = 10;
y.staticVariable = 20;
System.out.println(x.staticVariable);
那么将打印出20 – 只有一个变量,而不是每个实例。它会更清楚地写为:
Test x = new Test();
Test y = new Test();
Test.staticVariable = 10;
Test.staticVariable = 20;
System.out.println(Test.staticVariable);
这使得行为更加明显。现代IDE通常建议将第二个列表更改为第三个列表。
没有理由有声明如
private final int NUMBER = 10;
如果它不能改变,没有点每个实例有一个副本。