diff --git a/docs/java/basis/Java基础知识.md b/docs/java/basis/Java基础知识.md index 86e233be..2aea1f50 100644 --- a/docs/java/basis/Java基础知识.md +++ b/docs/java/basis/Java基础知识.md @@ -790,7 +790,7 @@ public void f5(int a) { ### 在一个静态方法内调用一个非静态成员为什么是非法的? -由于静态方法可以不通过对象进行调用,因此在静态方法里,不能调用其他非静态变量,也不可以访问非静态变量成员。 +这个需要结合 JVM 的相关知识,静态方法是属于类的,在类加载的时候就会分配内存,可以通过类名直接访问。而非静态成员属于实例对象,只有在对象实例化之后才存在,然后通过类的实例对象去访问。在类的非静态成员不存在的时候静态成员就已经存在了,此时调用在内存中还不存在的非静态成员,属于非法操作。 ### 静态方法和实例方法有何不同?