if语句“立即正常完成”是什么意思?

时间:2019-04-24 15:46:17

标签: java if-statement break java-11

“立即正常完成”是否意味着实际上跳过了if语句,并且未评估其条件?

编辑:

我本质上已经省略了一个示例,该示例旨在从Java规范中相对于if语句理解词组本身。

但是在这种情况下,似乎没有人考虑过这个短语。

这是一个演示程序。

import java.io.*;

class TestBreakWIthLabel
{
    public static void main (String[] args) throws java.lang.Exception
    {
        int x = 1;

        L:if ( x++ < 2 ) break L;

        System.out.println( "x = " + x );
    }
}

但是有人提供他对程序的“解释”是一个坏主意。我想独立于程序示例来了解该短语的含义。

以下是规范(14.15 break语句)中的相应引用。

  

带有标签标识符的break语句试图转移控制权   到带有相同标签的附有标签的语句(第14.7节)   标识为其标签;这个语句,称为中断   目标,然后立即正常完成。在这种情况下,   中断目标不必是while,do或for语句的开关。

1 个答案:

答案 0 :(得分:4)

假设您指的是this part of the JLS

  

带有break的{​​{1}}语句尝试转移控制权   附有标签的声明(第14.7节)   label Identifier作为其Identifier;此语句,称为label   目标,然后立即正常完成。在这种情况下,break   目标不必是breakswitchwhiledo语句。

其中for目标是一个break语句,则带标签的语句是if语句,并且其条件已经过评估,因为您位于其主体内,因此包含声明。不会在完成上再次进行评估。