ByteBuffer用于运行和调试的不同行为

问题描述

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时,一切正常。这个过程发生了什么变化?

感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...