java problem

java中表达式(1 > 0 || 2 < 10 && 3 < 0) 与 ((1 < 0 || 2 < 10) && 3 < 0)是等价的吗

不等价,前者 true,后者 false

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    首先,我们来分析两个表达式:

    (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
    

    因此,可以验证我们的分析结果,即两个表达式的结果都是假。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^