public class HashMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable
{
/**
* The default initial capacity - MUST be a power of two.
*/
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;//why not 16 here
有人可以给出更好的解释吗?
最佳答案
很简单:左移 1 生成一个常数,例如 1 << N 始终是 2 的幂。
可以用其他方式编写,但这种方式会更具 self 描述性。 我认为它完全等价,但它的编写方式可以清楚地说明值是如何产生的以及如何计算的
就像在这种情况下( 1 << 4
)一样,在这种情况下,它的目的是 2^4 即 16。
关于java - 为什么 HashMap.java 中的常量 DEFAULT_INITIAL_CAPACITY 使用 1 << 4 而不是 16?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34216685/