在 Java Collection 类中,我经常注意到如下代码
//ArrayDeque
public E pollFirst() {
int h = head;
@SuppressWarnings("unchecked")
E result = (E) elements[h];
// Element is null if deque empty
if (result == null)
return null;
elements[h] = null; // Must null out slot
head = (h + 1) & (elements.length - 1);
return result;
}
head = (h + 1) & (elements.length - 1);
是做什么的?
为什么要在这里使用 & 运算符,它有什么作用。
我的问题不是 & 是如何工作的,而是它在这里有什么用。
谁能解释一下?
最佳答案
它是 (h + 1) % elements.length
的快捷方式,仅当 elements.length
是 2 的幂时才有效。在一些较旧的硬件上,这可能会运行得稍微快一些,但我怀疑在现代 CPU 上是否仍然如此。
关于java - & 位运算符如何在这里工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44984413/