我不知道为什么在循环中初始化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++;
}
}
答案 0 :(得分:1)
删除关键字final
。您不能一次又一次地为final
变量赋值。您无法初始化for
或while
循环中的值,但是要将其初始化以确保它只被调用一次 - 它发生的原因是它事先并不知道有多少周期将被调用。
答案 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)
编译器不关心循环中的代码在运行时执行多少次。为防止可能发生重新分配,不允许在循环中分配最终变量。