“立即正常完成”对于if语句意味着什么?

问题描述 投票:1回答:1

“立即正常完成”是否意味着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语句。

if-statement break java-11
1个回答
4
投票

假设你指的是this part of the JLS

breaklabel Identifier声明试图将控制转移到与Identifier具有相同label的封闭标签声明(§14.7);这个语句叫做break目标,然后立即正常完成。在这种情况下,break目标不必是switchwhiledofor声明。

其中break目标是一个if语句,那么封闭的标签语句是if语句,它的条件已经被评估,因为你在它的主体内,它包含的语句。它在完成时不会再次评估。

© www.soinside.com 2019 - 2024. All rights reserved.