Java中的并行布尔表达式求值

Java中的并行布尔表达式求值,java,boolean-expression,Java,Boolean Expression,可能重复: 如果我有2个条件,比如A和B,我输入: A && B 它们是否都是并行评估的,并且只有在并行评估时才进行评估? 例如,如果我键入A&&false它会评估A条件还是知道它无论如何都是false 如果不是并行的,是从右边开始还是从左边开始? (A&&falseVSfalse&&A) 谢谢 编辑:明白了。谢谢大家 A && B 不,, 首先计算A,如果A为false,则跳过计算B 如果A为真,则检查B是否为真 A && false 在

可能重复:

如果我有2个条件,比如A和B,我输入:

A && B
它们是否都是并行评估的,并且只有在并行评估时才进行评估? 例如,如果我键入
A&&false
它会评估
A
条件还是知道它无论如何都是false

如果不是并行的,是从右边开始还是从左边开始? (
A&&false
VS
false&&A

谢谢

编辑:明白了。谢谢大家

A && B
不,, 首先计算A,如果A为false,则跳过计算B 如果A为真,则检查B是否为真

A && false

在这种情况下,首先计算A,如果A为false,则不检查下一个条件(false)。如果A为真,则将计算false,但由于它为假,整个条件将为假

它将从左开始右开始。如果没有括号的话

if("name".equals(variable1)){}
var1
为空时,is将收到错误。但是,当您使用:

if(variable1.equals("name")){}

它是空安全的。

它不会。如果A为假,则不会转到B。是的。它是从右向左的。只有当第一个为真时,才计算第二个(B)。否则,如果A为false,则A&&B将直接计算为false,而不计算B,因为这无关紧要。@user550413如果得到答案,您应该将答案标记为已接受。@eis是的,但我需要等待10分钟才能接受。好的,这是左右评估。它依赖于编译器还是有保证?@user550413是的,它从左开始计算。是的,它被重新筛选:Phow是您的示例代码,与
A&B
的计算方式有关吗?而且,这完全是错误的。如果var1为null,则在这两种情况下都会中断。我看到您更改了代码。然而,这仍然是无关的,仍然是错误的
if(variable1.equals(“name”)
对于
variable1
来说不是空的。