可以存在两个类变量副本吗?

Oh *_*oon 1 java static-members

我有一个Car具有类范围变量成本的类,我理解这在实践中是一个坏主意,只是试图理解公共范围类变量的影响.

Car的所有对象,Car.cost的引用,所有类加载器都可以访问和修改成本,还是应该知道Car.cost可能存在多个副本的情况?Car.cost在任何特定情况下都会有一个吗?

public class Car{
  public static int cost;

  public Car(int cost){
     cost = cost;
  }
}

public static void main(String args[]){
  Car car = new Car(2);      
}
Run Code Online (Sandbox Code Playgroud)

Tho*_*mas 6

cost每个加载的类只有一个静态变量实例.但请注意,根据类加载器的不同,可能会多次加载一个类.

作为旁注,这不符合你的想法:

public Car(int cost)
{
  cost = cost;
}
Run Code Online (Sandbox Code Playgroud)

在这里,您将参数分配给自身(如果您将其设置为最终,则应该得到编译器错误),而不是静态变量的参数.这也称为阴影和不良做法.