![](/img/trans.png)
[英]what does “::” (double colon) operator mean in “Chunk::new” in 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 var
是1
的结果-位的二进制左移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.