性能问答>ByteBuffer的put方法源码里面有<<0这样的操作,有大佬能帮忙解释下这样做的意义吗>
3回复
1年前

ByteBuffer的put方法源码里面有<<0这样的操作,有大佬能帮忙解释下这样做的意义吗



问题如题

源码片段

long srcAddr = src.address + ((long)srcPos << 0);
long addr = address + ((long)pos << 0);
long len = (long)srcRem << 0;
2729 阅读
请先登录,再评论

可以看一下 generator, “This file was mechanically generated: Do not edit!“

1年前

从目前的代码片段来看,没有觉得这么做有什么特殊意义,可以贴一下完整的相关代码片段吗,或者贴下具体的jdk版本

11年前
回复 ferdi:

比如1.8版本的DirectByteBuffer这个类里面就有

public ByteBuffer put(byte[] src, int offset, int length) {

        if (((long)length << 0) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) {
            checkBounds(offset, length, src.length);
            int pos = position();
            int lim = limit();
            assert (pos <= lim);
            int rem = (pos <= lim ? lim - pos : 0);
            if (length > rem)
                throw new BufferOverflowException();
                Bits.copyFromArray(src, arrayBaseOffset,
                                   (long)offset << 0,
                                   ix(pos),
                                   (long)length << 0);
            position(pos + length);
        } else {
            super.put(src, offset, length);
        }
        return this;
    }
1年前回复