初学者,这个是想从1-100中找出所有的质数,想问一下那个boolean放在for之前和之后的所得的结果为什么会有差距呀,不应该在外面的作用域更大嘛。。

Java中for的作用域问题
初学者,这个是想从1-100中找出所有的质数,想问一下那个boolean放在for之前和之后的所得的结果为什么会有差距呀,不应该在外面的作用域更大嘛。。
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
关注
回顾下 for循环的语法机制以及运行原理:
for(初始化表达式;布尔表达式;更新表达式){ 循环体(由java语句构成); } 注意: 1、初始化表达式最先执行,并且在整个循环中只执行一次。 2、条件表达式结果必须是一个布尔类型,也就是true或者false。 执行原理: 先执行初始化表达式,并且初始化表达式只执行一次。 然后判断条件表达式的结果,如果是true,则执行循环体。 循环体结束之后,执行更新表达式。 更新完之后,再判断条件表达式的结果,如果还是true, 继续执行循环体。 直到更新表达式执行结束之后,再次判断条件时,条件为false, for循环终止。 更新表达式的作用是:控制循环的次数,换句话说,更新表达式会更新 某个变量的值,这样条件表达式的结果才又可能从true变成false,从而 终止for循环的执行。如果缺少更新表达式,很有可能会导致死循环。
在说一下 嵌套循环总的循环次数 = 内循环次数*外循环次数
然后回到你这个问题,你可以简单理解循环最外层的k针对的是整个循环中共用的变量,一次改变,在整个循环中都可见。但是你在循环中的k只针对这一次循环有效,就相当于开始一次循环新创建了一个k的变量,同理,这个变量对子循环来说是全部可见的,但是当外层循环到了下一次,那么又是一个新的k了,同样的道理,直到循环结束
回答仓促,有用望采纳,不完善的解释点待优化,感兴趣深入了解的话,还可以去学习一下JVM的内存模型和对象引用部分内容,相信你会理解的更加透彻,加油!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录