带括号的逻辑运算的优先顺序(Java)[重复]

Posted

技术标签:

【中文标题】带括号的逻辑运算的优先顺序(Java)[重复]【英文标题】:Order of precedence for logical operations with parentheses (Java) [duplicate] 【发布时间】:2020-12-11 18:41:49 【问题描述】:

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

例如: (x > 0 || x 0 || (x

(修改后的格式)

【问题讨论】:

括号之间的操作具有总是更高的优先级。 在您的示例中,您使用:x > 0 || (x < 10 && y < 0) 您是否希望 OR 运算符右侧的条件首先执行? 您是否至少自己努力寻找答案? 【参考方案1】:

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

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

 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 条件已经满足。

【讨论】:

【参考方案2】:

是的,他们有。这就像在数学运算上添加括号以分开。你提供的例子不一样。

在第一个中,您是说:如果这些条件中的任何一个为真并且其他条件为真→然后返回真。这意味着第二个条件必须始终为真。

在第二个中你说:如果第一个条件为真或其他两个条件都为真→然后返回真。这意味着如果第一个条件为真,则您不必关心其余的。

假设我们为 X 插入值 1,为 Y 插入值 2。第一个将返回 false,因为无论 X 值如何,Y 都必须小于 2。 然而,第二种情况将返回 true。由于 X 大于 0,所以它会返回 true,因为它不关心其余部分,因为它是一个 OR 门。

【讨论】:

以上是关于带括号的逻辑运算的优先顺序(Java)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

带和不带括号的熊猫逻辑和运算符产生不同的结果[重复]

逻辑运算的优先级

sql server中运算符的优先等级从高到低的排列是怎样的?

什么是算术运算?什么是关系运算?什么是逻辑运算?

C语言运算符优先级顺序

R语言比较运算符和逻辑运算符顺序