java中内存有方法区,类加载时方法和静态属性都会随类加载到其中 为什么类名不能直接调用非静态

java中内存有方法区,类加载时方法和静态属性都会随类加载到其中 为什么类名不能直接调用非静态java中有方法区,类加载时方法和静态属性都会随类加载到其中
当非静态方法不使用对象特有数据时,可以定义为静态方法,从而直接用类名调用
当一个方法不使用对象特有数据,而不定义为静态方法时,为什么不能用类名直接调用呢?他不也在方法区中么?

类加载,网上有相关介绍在第一次创建一个类的对象或者第一次调用一个类的静态属性和方法的时候,会发生类加载类加载期间,如果发现有静态属性,就给对应的静态属性分配内存空间,并赋值这个过程完成之后,今后在调用该类的静态属性,虚拟机会直接寻找改属性先前已经分配的内存空间地址,然后调用其值。同样,修改这个类的静态属性也一样说白了,静态属性将永远占用某一块固定的内存空间,知道程序终止但是这里有点说不通,假如一个静态的字符串,运行过程中,不断修改这个字符串的值,那么其内存空间就不可能固定,所以可以认为这个静态字符串的引用是固定的
温馨提示:答案为网友推荐,仅供参考
相似回答