Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.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_Short Circuiting - Fatal编程技术网

虽然java提供了非短路版本的逻辑运算符(如逻辑|、&;),但何时需要这些运算符?

虽然java提供了非短路版本的逻辑运算符(如逻辑|、&;),但何时需要这些运算符?,java,short-circuiting,Java,Short Circuiting,我看到java(以及许多其他语言,如C#和VB)提供了逻辑“和”和“或”运算符的短路和非短路版本。 其中,as C/C++不提供非短路版本 何时需要这些非短路版本?如果可以不使用它们,为什么还要提供这些其他语言呢?例如,您可能会遇到一种情况,即您的条件语句是通过两种方法计算的: if (methodA() && methodB()) 现在,如果您绝对要求在此时运行这两个方法(可能它们执行其他相关操作,例如标记它们已被评估),那么您不应该使调用短路: if (methodA()

我看到java(以及许多其他语言,如C#和VB)提供了逻辑“”和“”运算符的短路和非短路版本。 其中,as C/C++不提供短路版本


何时需要这些短路版本?如果可以不使用它们,为什么还要提供这些其他语言呢?

例如,您可能会遇到一种情况,即您的条件语句是通过两种方法计算的:

if (methodA() && methodB())
现在,如果您绝对要求在此时运行这两个方法(可能它们执行其他相关操作,例如标记它们已被评估),那么您不应该使调用短路:

if (methodA() & methodB())
这保证了相同的结果,但也保证了两个方法都将运行。一般来说,从我所看到的情况来看,这几乎从未在实践中使用过,我可能会说这甚至是一种糟糕的做法


至于为什么在某些语言中使用这种功能,而在其他语言中不使用这种功能,这只是语言设计者的一个问题。最多我们可以猜到他们的意图。< /P>请提供一个你正在谈论的例子代码。检查这个事实,C和C++确实提供了你正在谈论的操作员(这是大多数其他语言从中得到的)。但是,将它们视为急切的布尔逻辑运算符并不是真正有用或正确的。我想说的是,根据我的代码指南,永远不要对逻辑条件使用
&
|
,而是将副作用从表达式中移除。可能的重复意味着不应该。你是什么意思?我在什么地方漏掉了一个词吗?是的,我把它放进去了,而不是做一个不具体的评论。因为你已经知道你的意思了,所以几乎不可能校对你自己的文章@John Yes,基本上如果您需要运行这两个方法,那么运行它们并将它们的返回值分配给一些临时标志。然后,当需要比较时,只需比较标志本身。这样就不需要进行非短路评估。如果您没有其他问题,可以单击我的答案分数下的复选标记,将此答案标记为已接受。