为什么false &&(false)?false:true返回true

Gom*_*ino 7 java syntax ternary-operator

请不要看这里的状况,以便减轻对行为的理解

为什么结果等于真?

boolean result = false && (false)?false:true;
Run Code Online (Sandbox Code Playgroud)

我知道我们可以解决这个问题:

boolean result = false && (false?false:true);
Run Code Online (Sandbox Code Playgroud)

但我只是想知道为什么第一个语法不正确,看起来像'?' 运营商优先于'&&'

Bat*_*eba 14

所述三元条件(?:)具有较低的优先级&&.所以

boolean result = false && (false)?false:true;
Run Code Online (Sandbox Code Playgroud)

(有不必要的括号); 相当于

boolean result = (false && false) ? false : true;
Run Code Online (Sandbox Code Playgroud)

由于(自false && falseIS false),这减少了

boolean result = false ? false : true;
Run Code Online (Sandbox Code Playgroud)

当然,这是true.


Gri*_*Dog 6

false && (false)求值为false,所以返回三元运算符的最后一个值,即true.


Roh*_*war 6

1)&&(逻辑与)

说明:-比较两个表达式,并且仅当两个表达式都为true时才返回true。如果一个或两个评估为false,则返回false。

以下列表显示了所有可能的组合:

true && false // Evaluates false because the second is false
false && true // Evaluates false because the first is false
true && true // Evaluates true because both are true
false && false // Evaluates false because both are false
Run Code Online (Sandbox Code Playgroud)

句法

expression1 && expression2

单击此处了解有关Logical AND的更多信息

2)|| (逻辑或)

描述:-比较两个表达式,如果一个或两个都为true,则返回true。仅当两个表达式均为false时才返回false。

以下列表显示了所有可能的组合:

true || false // Evaluates true because the first is true
false || true // Evaluates true because the second is true
true || true // Evaluates true because both are true
false || false // Evaluates false because both are false
Run Code Online (Sandbox Code Playgroud)

句法

表达式1 || 表达式2

单击此处了解逻辑或