可以在循环中分配变量吗?

时间:2018-05-27 14:56:30

标签: java while-loop initialization final

我不知道为什么在循环中初始化final变量并且循环只迭代一次时代码没有编译? Loop是以某种方式运行多次,并且对变量x进行了多次分配?

public static void main(String args[]) {

    int y;
    final int x;
    y=1;
    while(y<=1) {
        x=10;       //Compile time error; even loop iterate only once.
        y++;
    }
}

4 个答案:

答案 0 :(得分:1)

删除关键字final。您不能一次又一次地为final变量赋值。您无法初始化forwhile循环中的值,但是要将其初始化以确保它只被调用一次 - 它发生的原因是它事先并不知道有多少周期将被调用。

答案 1 :(得分:1)

在java中,最终变量是常量,因此您无法更改其值。在上面的代码中,x是最终变量,我看到你正试图改变x的值。所以你得到编译时错误。

答案 2 :(得分:0)

当您声明实例变量时

final int x;

x被指定为0。 最终标记不允许更改。

while(y<=1) {
    x=10;       //Compile time error; even loop iterate only once.
y++;
}

在while循环中,您将x分配给10,这违反了最终规则。

答案 3 :(得分:0)

编译器不关心循环中的代码在运行时执行多少次。为防止可能发生重新分配,不允许在循环中分配最终变量。