“立即正常完成”是否意味着实际上跳过了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语句的开关。
答案 0 :(得分:4)
假设您指的是this part of the JLS
带有
break
的{{1}}语句尝试转移控制权 附有标签的声明(第14.7节)label Identifier
作为其Identifier
;此语句,称为label
目标,然后立即正常完成。在这种情况下,break
目标不必是break
,switch
,while
或do
语句。
其中for
目标是一个break
语句,则带标签的语句是if
语句,并且其条件已经过评估,因为您位于其主体内,因此包含声明。不会在完成上再次进行评估。