[英]Why does false && (false)?false:true return true
请不要看这里的状况,以便减轻对行为的理解
为什么结果等于真?
boolean result = false && (false)?false:true;
我知道我们可以解决这个问题:
boolean result = false && (false?false:true);
但我只是想知道为什么第一个语法不正确,看起来像'?' 运营商优先于'&&'
三元条件 ( ?:
&&
优先级低于&&
。 所以
boolean result = false && (false)?false:true;
(有不必要的括号); 相当于
boolean result = (false && false) ? false : true;
因为(因为false && false
是false
),这减少到
boolean result = false ? false : true;
这当然是true
。
false && (false)
计算结果为false
,因此返回三元运算符的最后一个值,这是true
。
1)&&(逻辑AND)
说明: - 比较两个表达式,仅当两个表达式都为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
句法
expression1 && expression2
2)|| (逻辑OR)
说明: - 比较两个表达式,如果其中一个或两个表达式为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
句法
expression1 || 表达式2
因为
boolean result = false && (false)?false:true;
被解释为
boolean result = (false && (false))?false:true;
请参阅: Java运算符优先级 。 在表中你可以看到&&
优先级高于? :
? :
。
它只是一些布尔代数 。
False && false = true
false && true = false
true && true = true
true && false = false
所以在第一种情况下,它就像写作:
if (false && false){
result = false
} else {
result = true
}
在你的第二种情况下,它就像写作:
result = false && (false == false);
和false == false返回true。 所以false && true返回false
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.