为什么Java使用int i = 1 << 4,而不使用int i = 16?

时间:2019-03-20 05:10:29

标签: java

当我阅读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?

2 个答案:

答案 0 :(得分:13)

因为Java文档中明确指出,默认初始容量必须为2的幂。如果我们只看到其他整数而不是按位运算符,那将不能很好地说明这种局限性。

因此,通过使用左移运算符,它使每个开发人员都知道,在修改或使用HashMap类时,我们应该注意到这一点。

答案 1 :(得分:6)

它提供了更多的可读性,并帮助您了解如何从一定的数量入手。考虑下面的例子

final int red = 1;
final int blue = 1 << 1;
final int magenta = red | blue; // 3

以上数字中的每一位代表一种原色,从代码中您可以轻松找出为什么我选择3作为品红色的原因。如果您直接在声明中设置值3,对于读者来说并没有那么容易。