Postfix operators [] . (parameters) expression++ expression--
Unary prefix operators ++expression --expression +expression -expression ~ !
Unary prefix creation and cast new (type)
Multiplicative * / %
Additive + -
Shift << >> >>>
Relational < <= > >= instanceof
Equality == !=
Bitwise/logical AND &
Bitwise/logical XOR ^
Bitwise/logical OR |
Conditional AND && //here
Conditional OR || //here
Conditional ?:
Assignment = += -= *= /= %= <<= >>= >>>= &= ^= |=
这是在kalid A Mughal&amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp;拉斯穆森的书
根据本书&&
的优先级高于||
,但以下代码
if(true&&false||true)
{
System.out.println("yes");
}
此代码打印"yes"
。表示首先执行"||"
答案 0 :(得分:3)
我猜你的解释是错误的。由于&&
具有更高的优先级,因此评估顺序为
(true && false) || true
是
false || true -> true
答案 1 :(得分:0)
你的解释是关闭的。如果我们按照本书的说法,你的if语句可以重写并保持相同的含义
if( (true && false) || true)
现在很容易看出这确实评估为真,因此打印出“是”。
答案 2 :(得分:0)
true && false
=&gt; false
false || true
=&gt; true
因此,没有问题,因为和语句首先执行or语句。代码的预期结果是yes
。
答案 3 :(得分:0)
你的解释是错误的
true && false -> false
false || true -> true
预计会打印“是”
答案 4 :(得分:0)
if(true && false || true)
==&gt; if(false || true)
==&gt; if(true)
。
和真相表:
F & F = F
T & F = F
F & T = F
T & T = T
或真相表:
F | F = F
T | F = T
F | T = T
T | T = T
答案 5 :(得分:0)
请仔细查看,因为这些是短路 AND和OR
所以第一部分:
true&&false // evaluates to false
然后你有:
false || true
第一部分是假的,但是第二部分可能是真的(事实上它是),因此它移动检查第二部分,看到它是真的,因此返回true
答案 6 :(得分:0)
如果您更改了表示,您可以更清楚地看到它,例如:
if(true || true && false) {
System.out.println("yes");
} else {
System.out.println("no");
}
如果&&
优先( true || (true && false) )
,那么这将是真的,因此将打印“是”。
如果||
成为( (true || true) && false)
,您将拥有&&
这将是假的,并打印出“否。
如果您运行上面的代码,您会看到结果为“是”,因此{{1}}具有优先权。
答案 7 :(得分:0)
&amp;&amp;首先评估...但是“或”||的一侧是的,因此整体表达式的评估结果为“true”
if(true&&false||true)
{
System.out.println("yes");
}