java基础06 为什么静态方法不可以调用非静态方法和静态变量

静态方法

静态方法不可以调非静态全局变量,从内存的角度看,就是当类被加载的时候静态方法和静态属性(全局静态变量)被加载到内存中,就是在内存中开辟一段内存地址用来保存静态方法和静态属性,这时候没有被实例化的类在内存中是不存在的,所以静态方法是不能访问非静态的全局变量。在类被实例化的时候,就是new 某个类的时候,在内存中给这个类开辟一些内存空间保存这个类的对象,这个时候就可以用静态方法去访问非静态的全部变量。

那为什么main方法是静态方法,却可以调用非静态方法呢?

因为类在main函数被实例化的时候,已经在内存里开辟空间保存好相关的对象了,所以静态方法就可以调用了。main函数完成了实例化对象,对象其实就是该函数的局部变量了。方法的局部变量,所以可以访问。

你可能感兴趣的:(java,开发语言,后端)