类变量属于整个类,当系统第一次准备使用该类时,系统会为该类变量分配内存空间,类变量开始生效,直到该类被卸载,该类的类变量所占有的内存才被系统的垃圾回收机制回收。
对象根本不拥有对应类的类变量,通过对象访问类变量只是一种假象,通过对象访问的依然是类的类变量,可以这样理解:系统会在底层转换为通过该类来访问类变量。
package chap6_3;
public class NullAccessStatic {
public static void test()
{
System.out.println("static 修饰的类方法");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
NullAccessStatic nas=null;
nas.test();
}
}
如果一个null对象访问实例成员(包括实例变量和实例方法),将会引发NullPointerException异常,因为null表明该实例根本不存在,既然实例不存在,那么他的实例变量和实例方法自然也不存在。
运行结果
static 修饰的类方法