java为什么不能在静态方法中使用非静态变量

如题所述

    静态方法是不用创建对象就直接调用,所以在静态方法中没有this指针,不能访问所属类的非静态变量和方法,只能访问方法体内的局部变量、自己的参数和静态变量,而非静态变量是给一个类的实例化对象调用的,一个是类调用,一个是类对象调用,所有在静态方法中是不能使用非静态变量的。

    实例:

上面出错的原因就是在静态方法中使用了非静态变量,因为静态方法中访问不到非静态变量,解决办法,在非静态变量前面加个static修饰符即可。

这样修改就可以使用了。

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-04-28
静态方法不可以调非静态全局变量,从内存的角度看,就是当类被加载的时候静态方法和静态属性(全局静态变量)被加载到内存中,就是在内存中开辟一段内存地址用来保存静态方法和静态属性,这时候没有被实例化的类在内存中是不存在的,所以静态方法是不能访问非静态的全局变量,在类被实例化的时候,就是new 某个类的时候,在内存中给这个类开辟一些内存空间保存这个类的对象,这个时候就可以用静态方法去访问非静态的全部变量本回答被提问者采纳
相似回答