是否可以在 static 环境中访问非 static 变量?

static 变量在 Java 中是属于类的,它在所有的实例中的值是一样的。当类被 Java 虚拟机载入的时候,会对 static 变量进行初始化。如果你的代码尝试不用实例来访问非 static 的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

public class Test {
    @org.junit.Test
    public void test(){

        //Demo demo =new Demo();
        System.out.println(Demo.a);
        //System.out.println(Demo.b);//报错

        Demo demo =new Demo();
        System.out.println(Demo.a);//通过
        System.out.println(demo.b);//通过
    }
}

class Demo{
    static int a = 1;
    int b =2;
}

猜你喜欢

转载自www.cnblogs.com/kristse/p/static.html