Topic: [求助]static修饰符修饰的方法的问题 |
Print this page |
1.[求助]static修饰符修饰的方法的问题 | Copy to clipboard |
Posted by: 科大梦之队 Posted on: 2005-09-15 18:24 class StaticAndInstance{ static int classVar; int instanceVar; static void setClassVar(int i){ classVar=i; } static int getClassVar(){ return classVar; } void setInstanceVar(int i){ classVar=i; instanceVar=i; } int getInstanceVar(){ return instanceVar; } } class Xbz{ public static void main(String args[]){ StaticAndInstance m1=new StaticAndInstance(); StaticAndInstance m2=new StaticAndInstance(); m1.setClassVar(1); m2.setClassVar(2); System.out.println("m1.classVar="+m1.getClassVar()+ "m2.classVar="+m2.getClassVar()); m1.setInstanceVar(11); m2.setInstanceVar(22); System.out.println("m1.instanceVar="+m1.getInstanceVar()+ "m2.instanceVar="+m2.getInstanceVar()); } } 运行的结果是:m1.classVar=2 m2.classVar=2 m1.instanceVar=11 m2.instanceVar=22 我不明白的是:m1.classVar=2,它为什么会等于2呢? 我知道的是:有static修饰的方法不能在类方法中存取实例变量,而没有static修饰的方法则可以在实例方法中存取类域. 但是我在这个程序中,理解不了,希望哪位大侠指点迷津!小弟不胜感谢! |
2.Re:[求助]static修饰符修饰的方法的问题 [Re: 科大梦之队] | Copy to clipboard |
Posted by: PrimeJava Posted on: 2005-09-15 19:49 Static修饰的变量可以理解为类变量,即无论产生多少个A类的对象,这些对象都共同拥有那个类变量。 |
3.Re:[求助]static修饰符修饰的方法的问题 [Re: 科大梦之队] | Copy to clipboard |
Posted by: 科大梦之队 Posted on: 2005-09-15 20:13 上面这位老兄真是一语点醒梦中人!!!! 因为static的方法是属于整个类的,它在内存中的代码段将随着类的定义而进行分配和装载,不被任何一个对象专有.也就是说当"m2.setClassVar(2);"时,整个类的成员变量都为2了,包括刚刚"m1.setClassVar(1);",我说的对吧? 谢谢你的帮助! |
4.Re:[求助]static修饰符修饰的方法的问题 [Re: 科大梦之队] | Copy to clipboard |
Posted by: GlennLi Posted on: 2005-09-16 10:32 包括刚刚"m1.setClassVar(1);" 中的classVar 用static修饰的成员变量可以理解为类中的全局变量,在类中一处被修改了,其他处也被修改,在整个类中是统一的值! |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |