为什么if / else if / else是一个简单的布尔值,没有给出“无法访问的代码”错误

时间:2016-03-18 14:06:41

标签: java boolean unreachable-code

为什么此代码没有出现“无法访问的代码”错误?由于布尔值只能为true或false。

public static void main(String args[]) {
    boolean a = false;
    if (a == true) {

    } else if (a == false) {

    } else {
        int c = 0;
        c = c + 1;
    }
}

1 个答案:

答案 0 :(得分:59)

来自JLS 14.21. Unreachable Statements

  

如果由于无法访问语句而无法执行该语句,则为编译时错误。

  

如果if-then-else语句可以访问,则可以访问else语句。

您的if-then-else语句是可以访问的。因此,根据定义,编译器认为else语句是可达的。

注意:有趣的是,以下代码也会编译

// This is ok
if (false) { /* do something */ }

while

不适用
// This will not compile
while (false) { /* do something */ }

因为while的可达性定义不同(强调我的):

  

如果while语句可以访问且条件表达式不是值为false的常量表达式,则可以访问包含的语句。

相关问题