黑马程序员技术交流社区
标题:
非静态方法中不可以定义静态变量,为什么?
[打印本页]
作者:
梁秋瑜
时间:
2013-5-26 21:32
标题:
非静态方法中不可以定义静态变量,为什么?
本帖最后由 梁秋瑜 于 2013-5-27 20:47 编辑
非静态方法中不可以定义静态变量,为什么?
作者:
w270307032
时间:
2013-5-26 21:48
静态和非静态的方法中的变量都是局部变量,而拒不变量是不能用static修饰的。只有成员变量才能被static修饰。
作者:
陈延真
时间:
2013-5-26 22:04
非静态方法只是普通方法,而静态变量是常量,存在于方法区的静态共享区中,在整个类中都是有效的,而普通方法中的变量只在方法内才有效。
作者:
武志红
时间:
2013-5-26 23:31
本帖最后由 武志红 于 2013-5-26 23:34 编辑
http://bbs.itheima.com/forum.php ... id=47976&highlight=
看了这个全面的神贴你就懂啦
摘一句重要的切中要害的
1. 无论是静态方法还是非静态方法的局部变量,在程序执行时都在栈中被初始化,随着 被调用的 方法{}的结束而被释放,生命周期和局部一样长;
2. static定义的变量生存在静态存储空间,生命周期和类一样长;
3. 基于1,2 , 如果在(静态,非静态)方法内定义static 局部变量,都有这种生命周期的矛盾存在;
4.如果只需要在局部实用,将其定义成static也没有意义,如果不仅是要在局部实用,那么根据需求将其定义在方法外部才是更好的解决办法
5. 所以容许静态方法中有静态变量的定义方式 存在, 是矛盾的 而且 不能解决实际问题的。
作者:
王林涛
时间:
2013-5-27 08:33
① 静态所属于类,类变量,类函数
非静态所属于对象,实例变量,实例函数
② 静态是所有对象共享数据
非静态是对象的特有数据
③ 静态存储在方法区,有默认值
非静态跟随变量在堆内存存储,也有默认值
作者:
殇_心。
时间:
2013-5-27 10:09
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2