“立即正常完成”是否意味着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中断声明)。
带有标签Identifier的break语句尝试将控制转移到与其标签具有相同标识符的封闭标签语句(第14.7节);此语句称为中断目标,然后立即正常完成。在这种情况下,中断目标不必是switch,while,do或for语句。
假设你指的是this part of the JLS
与
break
的label Identifier
声明试图将控制转移到与Identifier
具有相同label
的封闭标签声明(§14.7);这个语句叫做break
目标,然后立即正常完成。在这种情况下,break
目标不必是switch
,while
,do
或for
声明。
其中break
目标是一个if
语句,那么封闭的标签语句是if
语句,它的条件已经被评估,因为你在它的主体内,它包含的语句。它在完成时不会再次评估。