java中表达式(1 > 0 || 2 < 10 && 3 < 0) 与 ((1 < 0 || 2 < 10) && 3 < 0)是等价的吗
不等价,前者 true,后者 false
不知道你这个问题是否已经解决, 如果还没有解决的话:首先,我们来分析两个表达式:
(1 > 0 || 2 < 10 && 3 < 0)
根据逻辑运算符的优先级,首先计算2 < 10 && 3 < 0
,由于2 < 10
为真,但3 < 0
为假,所以整个表达式的结果是假。
((1 < 0 || 2 < 10) && 3 < 0)
同样地,根据逻辑运算符的优先级,首先计算1 < 0 || 2 < 10
,由于1 < 0
为假,但2 < 10
为真,所以整个子表达式的结果是真。然后再计算(真 && 3 < 0)
,由于前面的子表达式结果为真,但3 < 0
为假,所以整个表达式的结果是假。
所以,两个表达式是不等价的。
接下来,我们尝试编写代码验证上述分析:
public class Main {
public static void main(String[] args) {
boolean expression1 = (1 > 0 || 2 < 10 && 3 < 0);
boolean expression2 = ((1 < 0 || 2 < 10) && 3 < 0);
System.out.println("expression1: " + expression1);
System.out.println("expression2: " + expression2);
}
}
当我们运行上述代码时,会打印出以下结果:
expression1: false
expression2: false
因此,可以验证我们的分析结果,即两个表达式的结果都是假。