为什么这两个字节操作不相等?

Why aren't these two byte operations equal?

我有以下代码:

ByteBuffer bb = ByteBuffer.allocate(totalLength);
bb.putShort(3);
bb.putShort(0);

bb.putInt(3 << 15 + 0);

我不明白为什么将两个短值放入字节缓冲区与第二个操作不一样

试试 bb.putInt(3 << 16 + 0):)

您还可以通过以下方式检查您的 ByteBuffer

System.out.println(Arrays.toString(bb.array()));