循环中的Java变量

时间:2017-07-13 12:52:09

标签: java loops variables

我的第一个问题,我是初学者。

请参考下面的代码,我试着定义j两次,java编译器给我一个错误,我完全理解。

我的问题是,如果我无法定义变量两次,为什么循环内的“char c = ...”正在工作。从逻辑上看,当循环体第一次执行时,定义了char c变量,当循环体执行第二次时,因为char c已经定义,它应该抛出一个错误,但它没有。为什么呢?

public class test{
    public static void main(String[] args){
        int j=1;
        for (int i=0; i<10; ++i){
            char c = (char)(Math.random()*26+97);
            System.out.println(i+1+" = "+c);
        }
        int j=2;
    }
}

由于

4 个答案:

答案 0 :(得分:3)

  

为什么循环中的“char c = ...”正在运行

因为for循环有自己的范围,所以每次迭代都会有一个不同的变量。

总的来说,您的代码将创建10个不同的变量。

答案 1 :(得分:1)

变量c仅存在于for循环的范围内。当迭代结束变量时,它可以在下一次迭代中重新声明。

答案 2 :(得分:0)

编译器检查声明。它们在执行期间执行。

编译器看到变量是在范围内声明的,而这就是它所关心的全部内容。它不检查该范围内的代码执行的频率。

答案 3 :(得分:0)

每当你在大括号中声明一个变量时,变量只存在于那些大括号内,也就是说,大括号外的任何代码都无法访问变量。

if(true) {
    char c = 'x';
}
 c = 'y';    // Error

这是因为一旦超出范围,变量就不再存在。

这是您的代码中发生的事情

for (int  i=0; i < 5; i++)
{
   char c = 'x'; // variable created on each iteration hence no error
}
 c = 'y'; // error since variable gets destroyed