当我阅读HashMap.class的Java源代码时,
/** The default initial capacity - MUST be a power of two. **/
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
为什么Java使用1 << 4,而不是16?
答案 0 :(得分:13)
因为Java文档中明确指出,默认初始容量必须为2的幂。如果我们只看到其他整数而不是按位运算符,那将不能很好地说明这种局限性。
因此,通过使用左移运算符,它使每个开发人员都知道,在修改或使用HashMap类时,我们应该注意到这一点。
答案 1 :(得分:6)
它提供了更多的可读性,并帮助您了解如何从一定的数量入手。考虑下面的例子
final int red = 1;
final int blue = 1 << 1;
final int magenta = red | blue; // 3
以上数字中的每一位代表一种原色,从代码中您可以轻松找出为什么我选择3
作为品红色的原因。如果您直接在声明中设置值3
,对于读者来说并没有那么容易。