1个回答
展开全部
图一第11行,for循环中的i使用的是静态成员变量。
图二第7行,for循环中的i使用的是局部变量。
静态成员变量我个人理解是类的一个固有属性,一般只有常量才会定义成静态成员变量,定义为变量就会发生图一的情况:类的实例1和实例2都操作了静态成员变量i,导致实例2在取i的初始值时,收到了实例1的影响。
而图二中因为for循环使用的是局部变量i,类的静态成员变量i的值没有收到for循环的影响。至于为啥实例2的t2.i变成了61,是因为第22行有个t1.i++的操作,使静态成员变量的值加了1。
所以除非是定义常量或者静态方法,一般不要使用static修饰符
你还可以试下i去掉static修饰符,运行结果可能又不一样了
图二第7行,for循环中的i使用的是局部变量。
静态成员变量我个人理解是类的一个固有属性,一般只有常量才会定义成静态成员变量,定义为变量就会发生图一的情况:类的实例1和实例2都操作了静态成员变量i,导致实例2在取i的初始值时,收到了实例1的影响。
而图二中因为for循环使用的是局部变量i,类的静态成员变量i的值没有收到for循环的影响。至于为啥实例2的t2.i变成了61,是因为第22行有个t1.i++的操作,使静态成员变量的值加了1。
所以除非是定义常量或者静态方法,一般不要使用static修饰符
你还可以试下i去掉static修饰符,运行结果可能又不一样了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |