关闭

在static方法中为什么不能使用this引用

1344人阅读 评论(0) 收藏 举报
分类:
  public class TestStatic {
      static int a = 1;
      public static void main(String args[]) {
>>    ¦   System.out.println(this.a);                                                                                  
      }   
  }
//运行报错
java:12: error: non-static variable this cannot be referenced from a static context
//非静态变量不能引用静态的上下文

这是每一个java初学者都会遇到的问题,我一直想不明白为什么会报错,今天突然想明白了,但也不是原理层面的明白,从逻辑角度分析吧。
static方法是直接可以调用的,看如下代码:

public class TestStatic {
    private static int a = 1;
    public static void main(String args[]) {
        //调用TestStatic的静态方法test()
       TestStatic.test();
    }
    static public void test() {
       System.out.println(a);                                                                                         
    }
}

而this 对象,它可以在类里面来引用这个类本身的属性和方法,说白了就是this是对象new出来后才会存在的,而static方法是不需要new出来直接可以调用的。所以在调用static方法并不能保证this已经存在,自然会报错!所以在static方法中只能引用static的变量和方法。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:51152次
    • 积分:914
    • 等级:
    • 排名:千里之外
    • 原创:46篇
    • 转载:1篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论