主方法中int变量为什么要加final修饰符?

主方法中int变量为什么要加final修饰符?

https://img1.sycdn.imooc.com//climg/648059eb096d4aae13740782.jpg

1.请问for循环中的局部变量i,在匿名类的run()方法中使用时,为什么会报错?


https://img1.sycdn.imooc.com//climg/6480597609328cbc23381310.jpg

2.增加final修饰的变量index应该是常量,为什么可以重复赋值?

3.为什么index要加final修饰符?


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小蓝 2023-06-07 18:31:27

同学你好~

1.匿名内部类中访问外部类局部变量时,要求该局部变量必须是被final修饰的。而for循环中的循环变量,要用于控制循环次数,是没有被final修饰的,所以会报错。在Java8版本及其之后的版本,如果外部类局部变量没有加final,并且该变量在后续没有值修改的操作,系统会默认为其添加final以保证语法正确,但是如果有值修改动作的话,就会编译报错。

2.循环中的index确实是常量,但是其也是for循环中的局部变量。该变量在每次循环运行结束之后,就会被回收,下一次循环时的index变量与上一次已经没有任何关系了。所以在代码上看是值的改变,实际上并没有进行改变。

祝学习愉快~

  • 提问者 weixin_慕哥1459466 #1

    补充问一下,是不是for循环循环体中(即{}中)定义的变量(比如index)的存活范围是单次for循环?而for循环判断语句(即()中)定义的变量(比如i)的存活范围是整个for循环?



    2023-06-07 20:26:08
  • 同学你好,同学的理解是正确的。

    祝学习愉快~

    2023-06-08 09:35:07
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师