变量x可能尚未初始化?

时间:2018-05-29 20:41:07

标签: java

我遇到了这段代码的问题,我在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);
  }
}

2 个答案:

答案 0 :(得分:3)

因为y=5是在运行时执行的,所以编译器在编译时不知道该值。

答案 1 :(得分:3)

在决定是否将发生某个执行路径时,Java编译器会考虑变量的可能值。在这种情况下,编译器在决定y条件是否始终为真时会考虑5if,因此x将始终初始化。< / p>

编译器只会看到没有if的{​​{1}},并认为else条件可能是if

您可以通过在false块之外初始化x或者包含if块并在其中初始化来删除此编译器错误。