考虑以下表达式:
!true || false && true || false
这评估为false,但我想知道的是java如何完成操作。我知道order in terms of precedence,其中! (not)
的优先级最高,其次是&& (and)
,然后是|| (or)
。
有几种方法可以让我看到它被评估:
(!true) || (false && true) || false
!(true || false) && (true || false)
!(true || (false && true) || false)
答案 0 :(得分:4)
您正确指出了运算符优先级文档,它源自相同的文档,即第二个选项和第三个选项都不正确。第二次打破了!和&&优先规则,第三个打破了!优先规则。
第一个选项最接近Java的方式,但Java也会短路&& amp;和||运算符(仅评估可以给出确定答案的点 - 对于||,首先是true
,对于&&),首先是false
。因此,在false && true
中,它只会评估第一个条件(false
)并跳过其余条件。