为了账号安全,请及时绑定邮箱和手机立即绑定

小白请教变量定义的小问题。。。

小白请教变量定义的小问题。。。

qq_代号猎人_0 2016-11-29 19:43:50
如图为啥c()函数里面加了int运行的结果变成了9?去掉int之后结果是10
查看完整描述

4 回答

已采纳
?
军师刘

TA贡献1条经验 获得超2个赞

如果你不加int,c函数的作用就是把a的值变为10。如果加了int,意思是在c函数里面重新定义了一个局部变量a,赋值10。

这个局部变量a,函数e是看不到的,函数e只能看到Di类的属性a的值(第14行的a)。关于局部变量和全局变量,你只需要记住强龙不压地头蛇。在地头蛇的区域外,强龙厉害,到了地头蛇的地盘,地头蛇厉害。

查看完整回答
2 反对 回复 2016-11-29
?
羅宇城_

TA贡献4条经验 获得超2个赞

首先,你得明白:

1、变量是有作用域的

2、加int相当于声明了一个新的变量,这个新变量是在方法c中声明的,

那么它的作用域就是方法c, 也就是说其它地方是访问不到这个新的a变量的;

3、方法e中只能访问到类中定义的那个a变量(int a = 9);

不加int时:(不加int的话就是对原有a变量的再次赋值)  程序先执行了方法c,

此时它把类中定义的a变量的值从9改变10;  然后执行方法e, 此时a变量的值已经是10了,结果为输出10;

加了int时:程序先执行了方法c,此时c方法中并不会去改变类中定义的a变量,而是重新定义了一个新的a变量,

这个a变量的作用域为方法c,它跟类中定义的a变量没有任何关系(类中定义的a变量的值依然是9),然后执行方法e, 

因为方法e只能访问到类中的a变量,所以输出结果为9;

查看完整回答
1 反对 回复 2016-11-29
?
道临

TA贡献80条经验 获得超126个赞

如果加上int 就代表int a在=10c函数中覆盖了外面的a,而a=10只能在c函数中生效,在c函数外a还是等于9

如果去掉int 代表把外面的a的值更改为10,在当前类中生效所以打印为10,望采纳

查看完整回答
1 反对 回复 2016-11-29
?
忘性最大的人

TA贡献118条经验 获得超37个赞

加了int相当于在该函数内创建了一个新的局部变量,不加默认该函数引用的是你的成员变量a,就是外面那个,你在main方法里先后调用了定义的两个函数,如果前面没有创建局部变量,则连续调用那俩函数就会改变a的值,定义局部变量就不会改变a的值,下面的输出函数永远输出的是a成员变量单位值。
查看完整回答
1 反对 回复 2016-11-29
  • 4 回答
  • 0 关注
  • 1666 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信