谁可以解释Java运算符<< =?

时间:2012-03-11 15:00:21

标签: java

在查看Java HashMap的源代码时,我看到下面的一些代码:

while(capacity< initialCapacity)      容量<< = 1;

但我找不到关于运营商<< =来自Google的文件。我知道运营商<<在Java中。 有什么帮助吗?

5 个答案:

答案 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;