零转移int值的目的是什么?[英] What's the purpose to bit-shift int value by zero?

问题描述

浏览java.nio.directbytebuffer类的源代码,我发现了这个:

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

将长度换零位的目的是什么?可能这是一些女人的优化还是别的东西?

推荐答案

我想我已经解决了它.

在javadocs类中:

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

所以它不是手工编码.它是脚本生成的,脚本编写器没有为位移量的零点换算的情况下没有添加优化.

其他推荐答案

做i << 0是一个no-op.它评估与i相同.

其他推荐答案

i << 0显然是冗余的. java程序员没有充分的理由刻意地编写此代码.

我会说这个代码是:

  • 由没有思考的人写,
  • 由不明白<<运算符所做什么的人写的,
  • 一些半机械重构的结果,或
  • 最初由某种代码生成器或翻译制作.
但是,字体码或JIT编译器将在其上优化它,或者它不会在表现上显着影响.

本文地址:https://www.itbaoku.cn/post/978800.html