访问静态变量

Sri*_*aru 12 java

public class Bicycle {

    private int cadence;
    private int gear;
    private int speed;
    private int id;
    private static int numberOfBicycles = 0;

    public Bicycle(int startCadence, int startSpeed, int startGear){
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;

        id = ++numberOfBicycles;
    }
       // ...
}
Run Code Online (Sandbox Code Playgroud)

我在课堂上学到了这一点Static variables should be accessed by calling with class name.即ClassName.VariableName

但是在上面的代码中id = ++numberOfBicycles;,即使变量numberOfBicycles是这样的,如何编译这个语句没有错误static

Ani*_*kur 15

静态变量由类而不是其各个实例(对象)拥有.引用类外部的静态变量是在类中,ClassName.myStaticVariable但它类似于其他实例变量.

您始终可以在非静态方法中使用静态变量,但是在静态方法中不能使用非静态变量,因为在加载静态方法时,不会创建其他非静态实例变量.

所以你的语句id = ++numberOfBicycles;完全有效,编译时没有错误.


Zim*_*oot 5

在类中,Bicycle限定符在静态变量上是可选的,就像this限定符在实例变量上是可选的一样


pin*_*her 5

可能你的讲师所说的是从课堂外而不是课堂内访问它们。static变量可以像这样在类外部访问ClassName.VariableName或访问object.VariableName。但第一种方法是优选的。

在类内部,您不需要使用this关键字或classname-qualifier在方法和构造函数内使用相同名称的局部变量来消除歧义。


Jun*_*san 5

静态变量是共享变量。因此,您可以使用 Classname.staticVariable 或使用类 instance.staticVariable 的对象访问它们。在任何情况下,您都将引用内存中变量的单个副本,无论您创建多少个对象。