繁体   English   中英

<< =运算符在Java中意味着什么?

[英]What does <<= operator mean in Java?

你能否从HashMap构造函数中专门解释这段代码片段

容量<< = 1:

// Find a power of 2 >= initialCapacity
198         int capacity = 1;
199         while (capacity < initialCapacity)
200             capacity <<= 1;

它相当于capacity = capacity << 1;
该操作将容量位向左移一位,相当于乘以2。

您发布的特定代码找到的最小幂2,大于initialCapacity

因此,如果initialCapacity为27,例如,循环后capacity将为32(2 ^ 5)。

就像var += 1大约等于var = var + 1 ,你在这里看到的( var <<= 1 )大约等于var = var << 1 ,这是“set var1的结果-位的二进制左移var “。

在这个非常具体的情况下,它实际上是一种稍微(运行时)表达capacity *= 2快速方式(因为1位的按位左移相当于乘以2)。

它相当于

capacity = capacity << 1;

它将capacity位移到左侧一个位置(因此,即00011011变为00110110 )。

每当这个循环出来时,“容量”的值就会因功率提高而增加2。

最初它是1 ie2 ^ 0; 第一次操作(容量<< = 1)使其成为2 ^ 1,然后是2 ^ 2,依此类推。 您可能希望在http://www.tutorialspoint.com/java/java_basic_operators.htm上看到更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM