首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java HashMap MAXIMUM_CAPACITY

Java HashMap MAXIMUM_CAPACITY
EN

Stack Overflow用户
提问于 2013-09-16 20:05:59
回答 2查看 341关注 0票数 1

我正在研究java.util.HashMap类代码,发现MAXIMUM_CAPACITY的定义如下:

代码语言:javascript
复制
static final int MAXIMUM_CAPACITY = 1 << 30;

是否有任何特定的理由像这样初始化而不是分配直接的值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-16 20:25:10

1 << 30是2的最大幂,可以以正值形式存储在一个带符号的32位整数中。这大概就是作者想要表达的。从备选的0x4000000甚至十进制表示法中,我们很难看到这个特性。

javadoc注释基本上已经说明了这一点:

代码语言:javascript
复制
/**
 * The maximum capacity, used if a higher value is implicitly specified
 * by either of the constructors with arguments.
 * MUST be a power of two <= 1<<30.
 */
static final int MAXIMUM_CAPACITY = 1 << 30;
票数 1
EN

Stack Overflow用户

发布于 2013-09-16 20:19:39

首先,它解释了如何选择- 2^30 (等于2的幂,大约是最大int值的一半)比0x40000000或1073741824之类的值更有意义。

第二,编译器无论如何都会计算值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18836389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档