憨豆al 2022-09-09 17:29 采纳率: 100%
浏览 31
已结题

Java中for的作用域问题

img


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

  • 写回答

3条回答 默认 最新

  • 削尖的螺丝刀 后端领域新星创作者 2022-09-09 17:52
    关注

    回顾下 for循环的语法机制以及运行原理:

    for(初始化表达式;布尔表达式;更新表达式){
            循环体(由java语句构成);
        }
    
         注意:
            1、初始化表达式最先执行,并且在整个循环中只执行一次。
            2、条件表达式结果必须是一个布尔类型,也就是true或者false。
        
        执行原理:
            先执行初始化表达式,并且初始化表达式只执行一次。
            然后判断条件表达式的结果,如果是true,则执行循环体。
            循环体结束之后,执行更新表达式。
            更新完之后,再判断条件表达式的结果,如果还是true,
            继续执行循环体。
            
            直到更新表达式执行结束之后,再次判断条件时,条件为falsefor循环终止。
    
        更新表达式的作用是:控制循环的次数,换句话说,更新表达式会更新
        某个变量的值,这样条件表达式的结果才又可能从true变成false,从而
        终止for循环的执行。如果缺少更新表达式,很有可能会导致死循环。
    

    在说一下 嵌套循环总的循环次数 = 内循环次数*外循环次数

    然后回到你这个问题,你可以简单理解循环最外层的k针对的是整个循环中共用的变量,一次改变,在整个循环中都可见。但是你在循环中的k只针对这一次循环有效,就相当于开始一次循环新创建了一个k的变量,同理,这个变量对子循环来说是全部可见的,但是当外层循环到了下一次,那么又是一个新的k了,同样的道理,直到循环结束

    回答仓促,有用望采纳,不完善的解释点待优化,感兴趣深入了解的话,还可以去学习一下JVM的内存模型和对象引用部分内容,相信你会理解的更加透彻,加油!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月17日
  • 已采纳回答 9月9日
  • 创建了问题 9月9日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程