Java静态变量访问

Java静态变量访问,java,static,static-methods,Java,Static,Static Methods,谁能解释一下为什么左边的代码可以编译,而第二个代码不行?我认为在这两种情况下,我都试图访问相同的“number”变量,但我可能错了。。。谢谢你的解释 让我们先了解什么是静态方法以及它是如何工作的,然后我们就可以很容易地得出这个问题的答案 当一个方法被声明为静态时,我们应该记住以下几点: 静态方法属于类而不是类的对象。 可以调用静态方法,而无需创建类的实例。 静态方法可以访问静态数据成员并可以更改其值 现在,java中的这个关键字是一个引用当前对象的引用变量。java中的super关键字也是一个引

谁能解释一下为什么左边的代码可以编译,而第二个代码不行?我认为在这两种情况下,我都试图访问相同的“number”变量,但我可能错了。。。谢谢你的解释


让我们先了解什么是静态方法以及它是如何工作的,然后我们就可以很容易地得出这个问题的答案

当一个方法被声明为静态时,我们应该记住以下几点:

静态方法属于类而不是类的对象。 可以调用静态方法,而无需创建类的实例。 静态方法可以访问静态数据成员并可以更改其值

现在,java中的这个关键字是一个引用当前对象的引用变量。java中的super关键字也是一个引用变量,用于引用直接父类对象

所以,我们可以说,this和super这两个关键字都是引用某个对象的引用变量。换句话说,这两个关键字都属于类的实例


然而,静态成员属于类而不是类的实例。因此,静态成员无法访问java中的this和super关键字。

静态方法中没有this,对于右侧的代码,该方法是静态的。这意味着,静态方法在所有实例之间共享。由于是静态/共享的,它无法访问实例变量(this.number),感谢您的快速回答。我认为这个静态方法本身就是一个类(this.number==number.number)@RadekChromík,这是反向的。您可以使用(例如)
this.number
在非静态上下文中访问静态字段,但您不能在静态上下文中使用
this
,甚至不能引用静态字段。