gpt4 book ai didi

Java: "If"语句中 AND 之后的 OR 运算符

转载 作者:行者123 更新时间:2023-11-29 10:08:58 24 4
gpt4 key购买 nike

基于 thisthis answer Java 在 &&|| 运算符方面采用短路。它还赋予 && 高于 || 的优先级。然而,以下代码的计算结果为 true:

    boolean condition1 = true;
boolean condition2 = true;
boolean condition3 = true;

if ( !condition3 && condition1 || condition2 ) {
System.out.println("Condition is true"); // prints Condition is true
}

由于 condition3 设置为 true 这应该导致 !condition3 为 false 那么为什么 Java 还要检查 condition1?

如果我在第一个条件周围添加括号,它仍然计算为真:

    if ( (!condition3) && condition1 || condition2 ) {
System.out.println("Condition is true");
}

我明白为什么这段代码的计算结果为真:

    if ( condition1 || condition2 && !condition3) {
System.out.println("Condition is true");
}

因为一旦 Java 在 condition1 之后遇到 ||,它甚至不会检查以下条件。但我不明白为什么前两个示例的计算结果为真。

我的目标是要求 condition3 为假,然后 要么 conditon1condition2(或两者都有) 为真(但如果 condition3true 那么无论 condition1condition2 如何执行,我都不希望执行打印语句 评估)

谢谢

最佳答案

你说:

It also gives && higher precedence over ||.

这意味着 !condition3 && condition1 将首先被评估。

所以这个

!condition3 && condition1 || condition2

等于:

(!condition3 && condition1) || condition2

因为 condition2true,所以表达式为 true

关于Java: "If"语句中 AND 之后的 OR 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52189590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com