黑马程序员技术交流社区

标题: 为什么静态方法中不能调用非静态的全局变量呢? [打印本页]

作者: liuelxiwd    时间: 2013-5-14 10:59
标题: 为什么静态方法中不能调用非静态的全局变量呢?
本帖最后由 liuelxiwd 于 2013-5-14 12:24 编辑

比如main方法中要调用全局变量 int a;就会提示错误,貌似new一个对象后,Test test = new Test(); 然后就可以用test.a来调用了,为什么呢?

作者: 王靖远    时间: 2013-5-14 11:02
这个int a是全局变量吗?
作者: liuelxiwd    时间: 2013-5-14 11:07
王靖远 发表于 2013-5-14 11:02
这个int a是全局变量吗?

对,我举的例子
作者: 王靖远    时间: 2013-5-14 11:11
liuelxiwd 发表于 2013-5-14 11:07
对,我举的例子

全局变量应该是public static final修饰吧。而且全局变量是要在静态代码块中初始化。
作者: liuelxiwd    时间: 2013-5-14 11:33
王靖远 发表于 2013-5-14 11:11
全局变量应该是public static final修饰吧。而且全局变量是要在静态代码块中初始化。 ...

不是,只要在类中定义的变量都是全局变量,方法体中定义的变量叫局部变量
作者: 刘胜寒    时间: 2013-5-14 11:45
被静态修饰的东西是属于类的。
优先于对象存在。同样也优先于全局变量存在。
你用一个存在的东西,去访问不存在的。
肯定有问题啊。。。
不理解,加我QQ私聊。

楼主注意结贴。。呵呵。。
作者: kaka小明    时间: 2013-5-14 11:59
静态方法和变量,只要程序加载了类的字节码,不用创建任何实例对象就会被分配空间,他们就可以直接通过类访问;而类中的全局变量属于对象,只有对象被创建了,才会被分配空间。如果静态方法访问非静态方法或者变量,如果该类对象没创建,那么这个非静态方法或者变量就不存在,试图访问不存在的方法或者变量当然是错误的。
作者: 乎¤_¤乎    时间: 2013-5-14 11:59
一直不明白怎么结贴,晕,所以一直不敢发帖




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2