2012-03-11 101 views
1

當看到Java HashMap中的源代碼,我看到下面的一些代碼:誰可以解釋Java運算符<< =?

而(容量<參數:initialCapacity) 容量< < = 1;

但我找不到關於運營商的文檔< < = via Google.I我知道運營商< <在Java中。 有什麼幫助嗎?

+1

您應該接受答案,勾選最佳答案旁邊的複選標記。我認爲這是Binyamin Sharet基於你對他的迴應。 – 2012-03-11 15:06:20

回答

8

這是一個左移位分配,它幾乎是相同的:

capacity = capacity << 1; 

(如+=/-= /等)

+0

哇,像c + +,謝謝 – 2012-03-11 15:03:02

3

這是相同的想法之類的東西+=,它轉移和受讓人。

在你的例子中,capacity將被分配給自己,左移一位,直到它達到initialCapacity。它在operators page上。

3
a <<= b 

只是一個左移的快捷方式,然後分配;這大致相當於:

a = a << b; 

所以行capacity <<= 1僅僅表示「按位由1左移在capacity值」。

3

「左移等於」(< < =)是一種用於2.

乘以下面都產生相同的結果的技術。

while (capacity < initialCapacity) { capacity <<= 1; } 

while (capacity < initialCapacity) { capacity = capacity * 2; } 

while (capacity < initialCapacity) { capacity *= 2; }