Какова цель битового смещения значения 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-компилятор оптимизирует это, или что это не повлияет на производительность в любом случае.