为什么要使用 & 而不是 &&?
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.
我知道 &
和 |
的作用 - 它评估双方(或所有条件,如果超过 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.