为什么要使用 & 而不是 &&?

Why use & over &&?

我知道 &| 的作用 - 它评估双方(或所有条件,如果超过 2) - 但我不能说我已经将这两个运算符用于很长一段时间,我总是使用 &&||.

例如(a != null) & (a.length == 1) 如果我们在知道 a 为 null 后检查其长度,则会抛出异常,显然 (a != null) && (a.length == 1) 只会 return false 如果 a 为 null 而没有需要检查 a 的长度是否为 1。我也知道如果你有很多条件要检查 returning,使用 &&|| 会有轻微的性能优势条件 2/100 的 true/false 比在条件 2 的 true/false 下评估所有 100 更快。

什么情况需要单个 &| 操作数?

&&|| 是两个谓词之间的 逻辑 AND 或 OR。这就是为什么它可以更有效地使用逻辑 AND 或 OR 我们可以做 Short-circuit evaluation.

另一方面,&| 应用 按位 AND 或 OR。这不使用短路评估。 this 的使用通常与对谓词的检查无关,而更多地与基于位的操作有关,例如 bit-masking.