带括号的逻辑运算的优先顺序(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)[重复]的主要内容,如果未能解决你的问题,请参考以下文章