byte[] arr;
ByteBuffer buffer = ByteBuffer.allocate(10);
buffer.put((byte) 0x00);
buffer.put(new byte[] {0x01, 0x02});
buffer.put(new byte[] {0x03, 0x04, 0x05});
buffer.put(new byte[] {0x06, 0x07, 0x08, 0x09});
arr = buffer.array();
for(byte c : arr) {
System.out.format("%d ", c);
}
当我运行上面的代码行时,它会根据需要打印输出。
0 1 2 3 4 5 6 7 8 9
当我用 Debug 运行它时,我又得到了我想要的结果。
0 1 2 3 4 5 6 7 8 9
现在我在任何一行都放了一个断点。当我在调试模式下用手移动应用程序时,只添加最后一个字节序列。它实际上添加了所有字节数组,但是从索引 0 开始添加所有字节数组,结果是
6 7 8 9 0 0 0 0 0 0
我不知道为什么会这样。是调试器的问题吗?
我正在使用 IntelljIdea 和 java1.8.0_162。当我输入 VM 选项 -Djava.compiler=NONE 时,一切正常。这个过程发生了什么变化?
谢谢你的帮助。