为什么1<<在HashMap.java中使用4代替16代表常量DEFAULT_INITIAL_CAPACITY?

时间:2015-12-11 05:26:30

标签: java hashmap

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 个答案:

答案 0 :(得分:3)

很简单:左移1生成的常数,例如1 <&lt; N将永远是2的力量。

它可以用其他方式编写,但这种方式更具自我描述性。 我认为它是完全等价的,但它是用来表明价值是如何产生以及如何计算

的方式

就像在这种情况下(1 << 4)在这种情况下,它的目的是2 ^ 4即16。