2012-03-11 2 views
1

Когда заглянуть в исходные коды Java HashMap, я вижу некоторые коды ниже:Кто может объяснить оператор Java << =?

время (мощности < initialCapacity) мощности < < = 1;

Но я не могу найти документ об операторе < < = через Google.I знаю оператора < < на Java. Любая помощь?

+1

Вы должны принять ответ, установив галочку рядом с лучшим ответом. Я предполагаю, что это Binyamin Sharet, основанный на вашем ответе на него. –

ответ

8

Это левое назначение сдвига, он практически идентичен:

capacity = capacity << 1; 

(как +=/-=/и т.д.)

+0

wow, как C++, спасибо –

3

Это та же идея, как вещи, как +=, он смещает и назначает ,

В вашем примере capacity будет присвоен самому себе, с левой стороны сдвинут на один, пока не достигнет initialCapacity. Он находится на operators page.

3
a <<= b 

- это просто ярлык для левого смены, затем назначить; это примерно эквивалентно:

a = a << b; 

Так линия capacity <<= 1 просто означает «побитовое смещение значения в capacity оставленное 1».

3

«сдвиг влево равно» (< < =) представляет собой метод, используемый для умножения на 2.

Ниже все производят тот же результат.

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

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

while (capacity < initialCapacity) { capacity *= 2; } 
Смежные вопросы