当前位置: 首页 > 面试题库 >

为什么简单布尔值的if / else if / else不给出“无法访问的代码”错误

蔡晨
2023-03-14
问题内容

为什么此代码没有给出“无法访问的代码”错误?由于布尔值只能为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;
    }
}

问题答案:

从JLS
14.21。无法到达的陈述

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

如果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的常数表达式时, 所包含的语句是可以到达的。



 类似资料:
  • 问题内容: 我似乎找不到解决此问题的方法。我正在做的是声明一个整数,它告诉我代码不可访问。 问题答案: 一旦使用方法,您将返回到首先调用该方法的方法。返回后放置的任何语句都是没有意义的,因为那是在不严重违反程序计数器的情况下无法到达的代码(在Java中可能是不可能的)。

  • if statements in Smarty have much the same flexibility as php if statements, with a few added features for the . Everyif must be paired with an/if .else andelseif are also permitted. "eq", "ne","neq",

  • 概要 <#if condition> ... <#elseif condition2> ... <#elseif condition3> ... ... <#else> ... </#if> 这里: condition, condition2, 等:将被计算成布尔值的表达式。 elseif 和 else 是可选的。 描述 你可以使用 if, elseif 和 else 指令来条

  • 一个If语句后面跟着一个或多个ElseIf语句,这些语句由布尔表达式组成,然后是一个默认的else语句,当所有条件都变为false时执行。 语法 (Syntax) 以下是VBScript中If Elseif - Else语句的语法。 If(boolean_expression) Then Statement 1 ..... ..... Statement n ElseIf

  • if语句后面可以跟一个else if...else语句,这对于使用单个if...else if语句测试各种条件非常有用。 语法 (Syntax) if...else if...else语句的语法如下 - if boolean_expression_1 { /* Executes when the boolean expression 1 is true */ } else if boolea

  • if语句后面可以跟一个else if...else语句,这对于使用单个if...else if语句测试各种条件非常有用。 语法 (Syntax) if...else if...else语句的语法如下 - if boolean_expression_1 { /* Executes when the boolean expression 1 is true */ } else if boolea