java - 用于运行和调试的 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 时,一切正常。这个过程发生了什么变化?
谢谢你的帮助。
解决方案
推荐阅读
- python - 训练模型后从 Keras/Tensorflow 获取预测
- xaml - 列表视图中项目的最大高度?
- php - 客户端错误:`GET https://api.powerbi.com/v1.0/myorg/datasets` 导致 `401 Unauthorized` 响应 Power BI REST api
- python - 我有一些文件格式的数据。我想知道每行的第一个字符串是什么,并计算它们重复了多少次
- python - Python 2.7 fnmatch 不编辑文本
- reactjs - 重置所有状态后有什么方法可以调用 useEffect 钩子
- mips - C 到 MIPS 的算术运算翻译
- spring - 我应该如何控制 Liquibase 和 springboot data.sql 之间的执行顺序?
- python - 从父类下定义的函数更新多页 GUI 中的 tkinter 进度条
- unity3d - 如何在 Bolt 转换流程图中获取 C# 事件单元?