静态成员变量和方法属于类本身,在类加载的时候就会分配内存。 而非静态成员变量或方法属于类的对象,只有在类的对象产生时(实例化时)才会分配内存,然后通过类的对象(实例)访问。 因此在一个静态方法内调用一个非静态成员时,可能会出现非静态成员没分配内存,非静态成员还不存在的情况,此时就会出错,因此是非法的。