我遇到了这段代码的问题,我在if块中为变量x赋值,但是编译器抛出了错误消息。我不明白为什么?
class psp
{
public static void main(String gg[])
{
int x, y;
y=5;
if(y==5)
{
x=5; // i have assigned a value to x
}
System.out.println(x);
}
}
答案 0 :(得分:3)
因为y=5
是在运行时执行的,所以编译器在编译时不知道该值。
答案 1 :(得分:3)
在决定是否将发生某个执行路径时,Java编译器不会考虑变量的可能值。在这种情况下,编译器在决定y
条件是否始终为真时会考虑5
为if
,因此x
将始终初始化。< / p>
编译器只会看到没有if
的{{1}},并认为else
条件可能是if
。
您可以通过在false
块之外初始化x
或者包含if
块并在其中初始化来删除此编译器错误。