Какова цель битового смещения значения int на ноль?

Посмотрев на исходный код класса java.nio.DirectByteBuffer, я нашел это:

if ((length << 0) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) ....

Какова цель сдвинуть длину на нулевые биты? Может быть, это оптимизация производительности или что-то еще?

Ответ 1

Я думаю, что решил.

В классе JavaDocs:

// -- This file was mechanically generated: Do not edit! -- //

Таким образом, он не кодируется вручную. Он был script -генерирован, а писатель script не добавил оптимизацию для случая, когда величина смещения бит равна нулю.

Ответ 2

Выполнение i << 0 - это не-op. Он оценивается так же, как i.

Ответ 3

i << 0 явно избыточно. Нет никакой веской причины, чтобы программист Java мог писать этот код намеренно.

Я бы сказал, что этот код:

  • написанный кем-то, кто не думал,
  • написанный кем-то, кто не понимает, что делает оператор <<,
  • результат некоторого полумеханического рефакторинга или
  • первоначально созданный каким-то генератором кода или переводчиком.

Тем не менее, есть хороший шанс, что байт-код или JIT-компилятор оптимизирует это, или что это не повлияет на производительность в любом случае.