Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果语句可以被打断一半吗?_Java_If Statement - Fatal编程技术网

Java 如果语句可以被打断一半吗?

Java 如果语句可以被打断一半吗?,java,if-statement,Java,If Statement,我只是想知道,如果已经运行了一半的“if”语句不再满足它必须满足的条件,它是否会停止运行。很难用语言来解释,下面是一个例子: boolean flag = true; if(flag){ //Some code execution here (code execution #1) flag = false; //Some more code execution here (code execution #2) } 在这种情况下,“代码执行#2”会运行吗?或者,当标志设置为false

我只是想知道,如果已经运行了一半的“if”语句不再满足它必须满足的条件,它是否会停止运行。很难用语言来解释,下面是一个例子:

boolean flag = true;

if(flag){

//Some code execution here (code execution #1)

flag = false;

//Some more code execution here (code execution #2)


}

在这种情况下,“代码执行#2”会运行吗?或者,当标志设置为false时,if语句的其余部分会被跳过吗?

if语句的全部内容将被执行,因为在条件检查时,标志等于true。

在您描述的情况下肯定不会,因为if语句中的条件是在执行if时计算的

如果您需要一个程序流控制机制来打破if语句,您可以使用异常(但由于许多原因,这并不理想)

或者,您可以使用标签和中断语句:

    boolean flag = false;
    MYLABEL:
    if (flag) {
        if (true) {
            break MYLABEL;
        }
        System.err.println("I will not execute");
    }

是的,它会运行;检查只进行一次。你试过了吗?这就是函数的用途。@mastgamr不,你不能使用break。哦,误读了这个问题,我以为它是用来循环的。@Qix,实际上你可以。避免使用标签。它们是杂乱的,不具有很多语言,容易出现错误,完全不可读。我很欣赏你的观点,尽管我想抛出一些事实,比如它们也是爪哇、C和C++中一个非常有效的语言结构,举几个例子,在很多严肃的项目中使用得相当多。(请参阅Linux内核、iOS/OS X开源组件等)。类似的流控制的替代选项有很大的缺点。例如?Linux内核非常陈旧。请快速搜索可读性和标签。您会发现它们通常会受到负面影响。它们是有效的构造,但由于历史原因。编译器优化了大量的函数调用。op是ob非常新;如果它们开始将标签作为一种常见的构造,那么您将设置它们,以防以后出现故障。使用标签/中断编译比函数调用要高效得多,因为不必将所有内容都推到堆栈上。标签还可以在必须中断循环时提高可读性。如果您正在调用Linux内核过时你能推荐另一个类似的复杂和成熟的系统级代码库吗?(我曾与两个专利代码库合作过,它们都广泛使用标签)这是一个鲜为人知的语言结构,因此我提到了它。
使用标签/中断编译比函数调用效率要高得多
,这只是猜测。虽然它通常可能是正确的,但速度并不是一个规范。请告诉我一个使用标签if语句的地方。if语句不是循环。