静态的范围和关键词“this”在java中

时间:2017-05-27 14:36:34

标签: java static this

我对这段代码有疑问:

public class Inner {

static int a;

    public static void main(String[] args) {
        a = 0;
    }

    public static void g() {
        this.a = 0;
    }
}

`

为什么我们不能在静态方法中使用“this.a”,但我们可以使用“a”而不使用“this”?

编译错误照片:https://www.dropbox.com/s/5q6y3ldsf37p0h3/%D0%97%D0%BD%D1%96%D0%BC%D0%BE%D0%BA%20%D0%B5%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202017-05-27%2017.28.34.png?dl=0

1 个答案:

答案 0 :(得分:1)

因为这个指向了该类的实例,所以在静态方法中您没有实例。

  

this 关键字引用该类的当前实例。静态成员函数没有 this 指针

您会注意到静态成员的定义是

  

使用 static 修饰符声明一个静态成员,该成员属于该类型本身而不是特定对象

这就是这个没有任何意义的原因。