一尘不染

为什么Java HashMap的最大容量是1 << 30而不是1 << 31?

java

即使int的最大值是2 31 -1,为什么Java HashMap的最大容量是1 << 30而不是1 << 31 ?最大容量初始化为static final int MAXIMUM_CAPACITY = 1 << 30;


阅读 1863

收藏
2020-12-03

共1个答案

一尘不染

Java使用带符号的整数,这意味着第一位用于存储数字的符号(正/负)。

一个四字节整数具有32位,其中数字部分由于有符号位而只能跨越31位。这将数字范围限制为 2 ^ 31-1 (由于包含0)到 -(2 ^
31)

2020-12-03