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

时间:2014-02-09 01:36:02

标签: java short-circuiting

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

这些短路版本何时需要?如果没有他们,为什么还要提供这些其他语言?

1 个答案:

答案 0 :(得分:3)

例如,您可能会遇到以下两种方法计算条件的情况:

if (methodA() && methodB())

现在,如果你绝对要求在这一点上运行这两种方法(也许它们会做其他相关的事情,比如记下它们已被评估过),那么你就不应该短信:

if (methodA() & methodB())

这保证了相同的结果,但它也保证了两种方法都能运行。一般来说,它几乎从未在我看过的实践中使用,我可能会认为这甚至是不好的做法。

至于为什么这个功能在某些语言而不是其他语言中的问题 - 这对于语言设计者来说只是一个问题。充其量我们可以猜到他们的意图是什么。