查看java.nio.DirectByteBuffer类的源代码,我发现了这个:
if ((length << 0) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) ....
将长度移位零位的目的是什么?可能这是一些性能优化还是其他什么?
答案 0 :(得分:16)
我想我已经解决了。
在JavaDocs类中:
// -- This file was mechanically generated: Do not edit! -- //
所以它不是手工编码的。它是脚本生成的,当位移的数量为零时,脚本编写器没有为该情况添加优化。
答案 1 :(得分:3)
执行i << 0
是无操作。它的评估与i
相同。
答案 2 :(得分:2)
i << 0
显然是多余的。 Java程序员没有充分的理由故意编写这段代码。
我会说这段代码是:
<<
运营商所做的事情的人编写,然而,字节码或JIT编译器很可能会优化它,或者它不会对性能产生重大影响。