做| 并且在Java中有意义吗?

我很少遇到&和| 其他代码中的逻辑运算符而不是|| 和&&。 我做了一个快速的研究,因为我从来没有使用它们,也不知道它是什么。
A && B意味着如果A为假,则不会评估B并且它将返回false。
A和B表示如果A为假,即使表单也返回false,也会评估B.
当然这是与|相同的游戏 和||。

我的问题是:如果第一个成员首先确定评估,那么评估第二个成员是否有意义? 我可以想象一个代码,其中第二个成员在clode中执行一些非常重要的逻辑,因此应该对其进行评估,但我怀疑这是不好的做法。 是否足以使| 和&存在?

从评论中可以更清楚地看出:我觉得这个程序不是最优的,并且工作得好或者说得更好:如果要对所有逻辑成员进行评估,那么设计得很好。

你忘记了按位操作

按位&运算符执行按位AND运算。

按位| 运算符执行按位包含OR运算。

但是在这里你可以找到无条件AND运算符更好的例子:

什么情况下最好使用无条件AND(而不是&&)

单&和| 不是逻辑运算符,它们是按位和逻辑运算符。

从按位和位移算子

按位&运算符执行按位AND运算。
按位^运算符执行按位异或运算。
按位| 运算符执行按位包含OR运算。

来自JLS 15.22。 按位和逻辑运算符

按位运算符和逻辑运算符包括AND运算符&,异或运算符^和包含OR运算符|。 大段引用

在此处输入图像描述

你可以使用| 如上所述,和&运营商。 一些静态代码分析器会警告您,因为它可能会掩盖可能的问题。 在那些您真正想要评估两个条件的情况下,您可以执行以下操作:

boolean cond1=cond1(); boolean cond2=cond2(); boolean myCond=cond1 && cond2; 

如果你只是使用

 boolean myCond=cond1()&cond2(); 

有人必须为你“纠正”它。 所以,是的,有些地方你会使用&和|,但很可能这不是一个好主意,你可以为了清晰起见绕过它。

想象一下,如果B是一个你想要一直执行的函数那么它会很有用。

我认为这可能是一个很好的例子:

 if (initializeConnectionA() & initializeConnectionB() & initializeConnectionC()) { performOperation(); } else { logger.warn("Not all modules are working properly"); } 

其中,initializeConnection接口连接到某些外部服务器,这些服务器可能并非全部正常工作。 您可能不需要将它们全部初始化,但是如果其中一些不工作则需要发出警告。

当然,对于这个问题,它可能不是最清晰的解决方案,但这是&运算符可能有用的示例。