Java定义变量问题?

同名变量只能定义一次,但为什么在循环里可以重复定义。如图,在for循环中定义了一个num变量,可是每次迭代时不是会重新定义吗,如果是这样为什么不会报错?

在for循环里面不是重复定义,首先你要理解变量的作用域和生命周期。在循环体内部的变量就类似于函数体内的变量,属于局部变量,并且生命周期和该次循环一致,以你的代码为例,从0开始遍历,执行6次,那么在i=0时,会定义一个num,然后加入List中,这时循环i=0结束,所以num会被清掉,但是由于List是for以外的变量,它的生命周期与调用for的那个函数一致,所以在i=1这个循环开始的时候,它不会消亡,而num已经不再是i=0时的num了。追问

那就是说这里的i是跟随着for循环的结束而结束,而num是在每次迭代重新定义而不是重复定义是吗

追答

对的,i在 for结束后,就不存在了,除非你的i定义在for外面,这样在for结束后,仍然存在。num在for里面不会重复定义,因为它在每一轮循环结束时就已经消亡了(生命周期到头了)

追问

谢谢!回答的很详细!

追答

不用客气,我也是在学习编程,一起进步!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-10-29
同一变量在同一作用域里只能定义一次,在循环体中,它不是一个作用域,每次循环时都是重新new的
相似回答