大家好,又见面了,我是你们的朋友全栈君。
代码及报错如下
解决
很多人都非常困惑,为什么在test3
中可以直接输出a
,但是在test3
中,使用a+=1
的时候,就直接报错呢?
首先,我们需要明确一个概念,就是全局变量与局部变量。如下图,大家觉得打印的a
会是1
还是3
?
答案是1
,因为定义在test3
外部的a
是全局变量,而定义在test3
内部的a
是局部变量。此时,外面这个a与里面这个a没有任何关系。只不过是名字一样而已。
其次,我们需要明确在函数内部是可以直接访问到全局变量的,所以上图中test1
是可以直接输出a,b
的。但是如果是直接在test2
中实现a+=1
时,其实也就演变为a=a+1
,此时,在代码右边的a
仍然是可以访问全局变量的,但是代码左边的a
却会认为在定义局部变量,而局部变量没有事先定义。所以报错。
那解决方法有两种,一种是声明test2
内部的变量为全局变量
另一种是在test2
里面先定义局部变量
就OK啦~
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148641.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...