Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&&和| |的短路在java中是如何工作的?_Java - Fatal编程技术网

&&和| |的短路在java中是如何工作的?

&&和| |的短路在java中是如何工作的?,java,Java,假设我们使用and运算符,这样 if (a.enable() && b.enable()) 因此,上述语句表明,这两个语句都必须为true才能继续 如果a.enable返回false,并且如果我们编写的语句 if (a.enable() && (b.enable() || c.enable())) 因此,上述语句意味着a.enable需要为true,从第二部分来看,b.enable或c.enable需要为true。其中任何一个都需要为true才能继续,但如果a

假设我们使用and运算符,这样

if (a.enable() && b.enable())
因此,上述语句表明,这两个语句都必须为true才能继续

如果a.enable返回false,并且如果我们编写的语句

if (a.enable() && (b.enable() || c.enable()))
因此,上述语句意味着a.enable需要为true,从第二部分来看,b.enable或c.enable需要为true。其中任何一个都需要为true才能继续,但如果a.enable不为true,则条件将失败,无需进一步检查

这是正确的吗?

是的,&&表示和,| |表示或。它们都短路,所以在以下情况下:

if (a.enable()  &&  b.enable())
if (a.enable()  ||  b.enable())
b、 如果a.enable返回false,则甚至不会调用enable

在下列情况下:

if (a.enable()  &&  b.enable())
if (a.enable()  ||  b.enable())
b、 enable甚至不会被称为af a.enable返回true

这就是允许这样的条件

if (s != null && s.equals(foo))
如果操作员没有短路,这将导致NullPointerException

if (a.enable()  &&  b.enable())

只有当第一个条件为true时,才会调用第二个条件。

您可以尝试使用逻辑运算符。可能在任何编程语言书籍的第一章中。太麻烦了,也查不出来?为什么不在b.enable和c.enable打印一些东西呢?您可以检查它是否被执行。非常感谢,这对理解有很大帮助。欢迎使用SO。请考虑解释您的代码是如何工作的并格式化您的答案。正如你所写的,你的回答似乎是胡言乱语。@RichardErickson即使你写了,也不是真的。这不是胡言乱语;海报根本没有用代码块格式化,也没有使用完美的英语。@RichardErickson为什么你认为我的答案是胡言乱语。原因有两个:1你最初的问题格式不正确,2原始帖子没有完整的句子。正如QPaysTaxes所指出的,我可能很严厉。也许“邋遢”是个更好的形容词。顺便说一句,我不是那个否决你答案的人。