java中for循环嵌套循环变量问题 25
为什么最后两行输出,ecilpse可以执行第一句,就是输出j,第二句,输出i就会报错,我明明两个变量都在循坏外面声明的,讲道理,i和j都应该都可以引用的呢,我按照第二张图...
为什么最后两行输出,ecilpse可以执行第一句,就是输出j,第二句,输出i就会报错,我明明两个变量都在循坏外面声明的,讲道理,i和j都应该都可以引用的呢,我按照第二张图的提示,直接在循坏外部初始化i=0,就可以引用i了,那为什么j没有初始化,可以引用呢?不是要各位帮忙改代码,只是想知道下,为什么会这样?有没有大腿告诉我下原理?卡在这里了
展开
2个回答
展开全部
1.
变量的初始化. 初始化之后语法上就没有问题.
2.
然后是变量的作用域问题.
看你的对比:大概可以得出的是,
for() 小括号里的变量的作用域是属于当前作用域的.j=4时,不满足条件退出了循环,最后j=4.
for(){ } 花括号里 是深一层的作用域. 所以for内的i属于花括号内, 可以理解为i'一撇(这是一个新的变量),之后离开花括号{}之后就释放/失效了.
你最后一个初始化i=0,最后结果i应该也是=0的. 不是for里面i=6
你自己其实已经试出结果了.另外我不是很懂java. 如果没错的话,最后j=4. i=0.
关键词:作用域.
变量的初始化. 初始化之后语法上就没有问题.
2.
然后是变量的作用域问题.
看你的对比:大概可以得出的是,
for() 小括号里的变量的作用域是属于当前作用域的.j=4时,不满足条件退出了循环,最后j=4.
for(){ } 花括号里 是深一层的作用域. 所以for内的i属于花括号内, 可以理解为i'一撇(这是一个新的变量),之后离开花括号{}之后就释放/失效了.
你最后一个初始化i=0,最后结果i应该也是=0的. 不是for里面i=6
你自己其实已经试出结果了.另外我不是很懂java. 如果没错的话,最后j=4. i=0.
关键词:作用域.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询