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
VSfalse&&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
来说不是空的。