为什么不能在if语句中声明变量?

以下Java代码无法编译。

int a = 0;

if(a == 1) {

int b = 0;

}

if(a == 1) {

b = 1;

}

为什么?在没有b先声明的情况下,没有代码路径可导致程序将1分配给该路径。

我想到b的范围可能仅限于第一条if陈述,但后来我不明白为什么。如果我真的不想b不必要地声明以提高性能怎么办?我不喜欢声明后不使用变量。

(您可能想争论一下,我不可以在第二条if语句中简单地声明b ,在这种情况下,请想象一下它可能在其他地方处于循环中。)

回答:

为什么?如果没有先声明,没有代码路径可以导致程序将1分配给b。

没错,但是编译器不知道这一点。编译器不执行代码。编译器仅转换为字节码,而不计算表达式。

以上是 为什么不能在if语句中声明变量? 的全部内容, 来源链接: utcz.com/qa/425534.html

回到顶部