为什么使用按位运算符而不是直接int值分配HashMap的默认初始容量? [重复]

问题描述 投票:1回答:2

这个问题在这里已有答案:

    /**
     * The default initial capacity - MUST be a power of two.
     */
    static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;

java.util.Map有一个static成员DEFAULT_INITIAL_CAPACITY,它被赋予int值,通过按位运算1<<4计算,这意味着16

我的问题是他们为什么分配这样的价值。使用按位运算符而不是直接分配int值来分配值有什么好处?

java bitwise-operators
2个回答
4
投票

Javadoc说默认初始容量“必须是2的幂”。

通过将作业写为左移,它鼓励未来的开发人员问自己“为什么他们这样写呢?”因此,阅读评论,同时也使价值更容易被改变为两个不同的权力。


2
投票

这是我的猜测:

java HashMap的容量总是被认为是2的幂(超出了本问题范围的原因)。因此,默认初始容量必须是2的幂。虽然16是2的幂,但是1 << 4清楚地向任何可能想要修改代码的人说明了这种限制。

© www.soinside.com 2019 - 2024. All rights reserved.