在查看Java HashMap的源代码时,我看到下面的一些代码:
while(capacity< initialCapacity) 容量<< = 1;
但我找不到关于运营商<< =来自Google的文件。我知道运营商<<在Java中。 有什么帮助吗?
答案 0 :(得分:8)
这是左移位分配,几乎与:
相同capacity = capacity << 1;
(例如+=
/ -=
/等。)
答案 1 :(得分:3)
与+=
之类的内容相同,它会转移和分配。
在您的示例中,capacity
将被分配给自己,左移一个,直到它达到initialCapacity
。它位于operators page。
答案 2 :(得分:3)
a <<= b
只是左移然后分配的快捷方式;它大致相当于:
a = a << b;
因此,行capacity <<= 1
只是意味着“将capacity
中的值逐位移位1”。
答案 3 :(得分:3)
“左移等于”(&lt;&lt;&lt; =)是一种用于乘以2的技术。
以下都会产生相同的结果。
while (capacity < initialCapacity) { capacity <<= 1; }
while (capacity < initialCapacity) { capacity = capacity * 2; }
while (capacity < initialCapacity) { capacity *= 2; }
答案 4 :(得分:2)
http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter02/operators.html
&lt;&lt; =,&gt;&gt; =,&gt;&gt;&gt; =
这是Shift操作然后分配,例如 x <&lt; = n; 相当于 x = x&lt;&lt; N;