Java - 使用字节索引到数组中

Fro*_*koy 1 java arrays byte

是否可以基于字节索引Java数组?

即类似的东西

array[byte b] = x;
Run Code Online (Sandbox Code Playgroud)

我有一个性能非常关键的应用程序,它从文件中读取b(在上面的代码中),我不希望将此转换为int的开销.实现这一目标的最佳方法是什么?使用这种索引方法而不是int会导致性能下降吗?

非常感谢,

Froskoy.

Lou*_*man 6

"将其转换为int"没有任何开销.在Java字节码级别,所有bytes都已经int是s.

int无论如何,无论如何,进行数组索引会自动向上转换.这些都不会改善性能,许多会降低性能.只需使用代码保留代码即可int.

JVM规范,第2.11.1节:

请注意,表2.2中的大多数指令都没有整数类型byte,char和short的形式.没有布尔类型的形式.编译器使用Java虚拟机指令编码字节和字节类型的文字值的加载,这些指令在编译时或运行时将这些值签名扩展为int类型的值.boolean和char类型的文字值的加载使用在编译时或运行时将文字零扩展为int类型的指令进行编码.同样,来自boolean,byte,short和char类型的值数组的加载使用Java虚拟机指令进行编码,这些指令将值符号扩展或零扩展为int类型的值.因此,对实际类型boolean,byte,char和short的值的大多数操作都是由对计算类型int的值进行操作的指令正确执行的.