变量可能在循环中分配?
Variable might be assigned in loop?
我不知道为什么当final
变量在循环中初始化并且循环只迭代一次时代码没有编译?循环是否以某种方式 运行 不止一次并且对变量 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++;
}
}
删除关键字 final
。您不能一次又一次地为 final
的变量赋值。您不能在范围循环外定义的 for
或 while
循环中初始化 final
值。即使循环被调用一次,编译器也不知道循环会被调用多少次。
在java中,final 变量是常量,因此您不能更改它的值。在上面的代码中,x 是最终变量,我看到您正在尝试更改 x 的值。所以你得到了编译器时间错误。
当你声明了实例变量时
final int x;
x 赋值为 0。
final 标签不允许更改。
while(y<=1) {
x=10; //Compile time error; even loop iterate only once.
y++;
}
在 while 循环中,您将 x 分配给 10,这违反了 final 规则。
编译器不关心循环中的代码在运行次会执行多少次。为防止 可能 发生重新赋值,不允许在循环中分配最终变量。
我不知道为什么当final
变量在循环中初始化并且循环只迭代一次时代码没有编译?循环是否以某种方式 运行 不止一次并且对变量 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++;
}
}
删除关键字 final
。您不能一次又一次地为 final
的变量赋值。您不能在范围循环外定义的 for
或 while
循环中初始化 final
值。即使循环被调用一次,编译器也不知道循环会被调用多少次。
在java中,final 变量是常量,因此您不能更改它的值。在上面的代码中,x 是最终变量,我看到您正在尝试更改 x 的值。所以你得到了编译器时间错误。
当你声明了实例变量时
final int x;
x 赋值为 0。 final 标签不允许更改。
while(y<=1) {
x=10; //Compile time error; even loop iterate only once.
y++;
}
在 while 循环中,您将 x 分配给 10,这违反了 final 规则。
编译器不关心循环中的代码在运行次会执行多少次。为防止 可能 发生重新赋值,不允许在循环中分配最终变量。