初学java的时候遇到这样一个bug: 错误: 无法从静态上下文中引用非静态 变量 this

代码主要功能是定义了一个Person测试类,然后在main方法里调用,不多bb,上代码:

public static void main(String[] args) {
    Person per1 = new Person("hardy", 20);
    per1.getInfo();
}
class Person{
    String name;
    int age;

    Person(String name, int age){
        this.name = name;
        this.age = age;
    }
    void getInfo(){
        System.out.println("name: "+name+"; age: "+age);
    }
}

百度一下,找到这篇博客 https://blog.csdn.net/qq_3374...
但是该博客中出现的问题与我所遇到的不太一样。我的解决办法是在Person类前面加static,这样也能消除bug。

引用上述博客中的总结:

关于这个问题是因为大家没有理解和记住这句话:静态方法中不能引用非静态变量!

我们知道 静态方法可以通过所在类直接调用而不需要实例化对象,非静态成员变量则是一个对象的属性。它只有在有实例化对象时才存在的,所以在静态方法中是不可以调用非静态变量的!如果发生调用,则编译器会报出如上的错误。


HardY
1 声望0 粉丝