【发布时间】:2011-01-22 15:29:39
【问题描述】:
int a = 1, b;
if(a > 0) b = 1;
if(a <= 0) b = 2;
System.out.println(b);
如果我运行它,我会收到:
线程“main”java.lang.Error 中的异常:未解决的编译问题: 局部变量 b 可能尚未初始化 在 Broom.main(Broom.java:9)我知道局部变量没有初始化,你有责任这样做,但是在这种情况下,第一个 if 没有初始化变量?
【问题讨论】:
-
因为“愚蠢”的编译器! [和语言规范。允许/强制它是]。编译器无法实现这两个条件涵盖了“a”的所有可能性 [即覆盖整个整数范围]
-
语言规范要求这种行为。编译器是不允许聪明的。
标签: java variables initialization compiler-errors variable-assignment