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

Smallnine:

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

塞缪尔·罗伯特:

它提供了你如何到达一定数量,开始有更多的可读性和可理解。考虑下面的例子

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

在上面的数字中的每一位代表一个原色,并从代码,你可以很容易地弄清楚为什么我选择3了红色。它不会一直在为读者更容易,如果你直接设置值3在声明。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

什么是“ int(i)= 1;”?

为什么使用1 << 4而不是16?

为什么使用 [i:i+1] 而不是 [i]?

为什么要在循环中使用foreach而不是for(int i = 0; i <length; i ++)?

这个“ for”循环会停止吗,为什么/为什么不呢?为(int i = 1; 1 / i> 0; i ++){}

`int main(i){printf(“ i =%d \ n”,i); 我的价值是1。为什么?请解释?

为什么使用i * i <n的isPrime对于除2 ^ 31-1之外的每个int返回正确的答案

为什么 malloc 分配的内存值使用 i++ 而不是 i+4 分配(在 int 为 4 字节大的情况下)?

为什么“ int i =(字节)+(char)-(int)+(long)-1”为1?

为什么使用i ++的for循环似乎增加2而不是1?

背包算法:为什么我们使用wt [i-1]而不是wt [i]

为什么我可以将1传递为short而不传递int变量i?

为什么“ int i”有多个定义?

Java“ int i = byte1 | 0x0200”与“ int i = byte1”?

如何针对i = [1:16]绘制y = x + i?

为什么i + = l编译,而i是int而l是long?

为什么`const int&k = i; ++ i; `可能吗?

C# int i = +1 是什么意思?

为什么两种情况下的行为不同1。int i = 1,2,3; 和第二。我 i = 1,2,3;

为什么是“ int i = 2147483647 +1;” 可以,但是“字节b = 127 + 1;” 不可以编译吗?

为什么要使用int [] a = new int [1]而不是仅仅使用int a?

关于for(),为什么要使用i ++而不是++ i?

`int j = i + rand()/(RAND_MAX /(curr_pos-i)+ 1);`是什么意思?

为什么“ i&(i ^(i-1))”等效于“ i&(-i)”

为什么for(int i = 0; i + 9 <s.length(); i ++)比for(int i = 0; i <s.length()-9; i ++)要快得多

为什么/ etc / profile检查PS1而不是$-中的-i标志

在Ruby中,为什么`i + = 1 end当为true时“不是线程安全的吗?

为什么map <bool,int> m = {{1,2,3,4,5,0}} 1号而不是3号?

为什么要使用 i = (i +1) & mask 递增,其中 mask 是 0b1111?