首页 > 解决方案 > 带括号的逻辑运算的优先顺序(Java)

问题描述

只是想知道括号是否比java中布尔表达式中的逻辑运算符具有更高的优先级。

例如: (x > 0 || x < 10) && y < 0 是否与 (x > 0 || (x < 10 && y < 0)) 相同?

(编辑格式)

标签: javalogical-operatorsboolean-expression

解决方案


逻辑条件中括号的存在不会改变条件的优先级,因为布尔运算总是从左到右执行。

方括号可用于“分组”在较大表达式中使用的子条件,但这些子条件的存在不会赋予其执行任何优先级。请参见以下示例:

 class Scratch {
    public static void main(String[] args) {
        if (f() || (t() && f())){
            System.out.println("finish");
        }
    }

    public static boolean f() {
        System.out.println("false");
        return false;
    }

    public static boolean t() {
        System.out.println("true");
        return true;
    }
}

这将输出:

false
true
false

因为这对应于从左到右的执行顺序。请注意,如果 OR 函数的第一个条目为真(t()在我的示例代码中使用),则甚至不会评估后一个条件,因为 OR 条件已经满足。


推荐阅读