是否可以在Java中更改数组的类型?
Possible Duplicate:
byte array to Int Array
我有一个很大的字节数组,我能不能把它解释为一个int数组,这样每个条目就只有原始字节的四个
我的意思是这样的:
for (int i = 0; i < byteArray.length; i += 4) {
intArray[i / 4] = byteArray[i] << 24 + byteArray[i+1] << 16 + byteArray[i+2] << 8 + byteArray[i+3];
}
但是,与其一个字节一个字节地复制整个数组(因为数组太大,需要花费很长时间),不如从已经存在的数组中读取整数
# 1 楼答案
不可以。数组的类型是不变的
不,如果是,但是是或者可能是
# 2 楼答案
使用此代码:
将占用很少的额外堆空间。实际上,它包装字节数组并创建一个int数组视图。更快,在我的PC中,INT_MAX的缓冲区大小只需几纳秒
# 3 楼答案
问:可以在Java中更改数组的类型吗
答:一般来说,“不”。你必须逐项复制/转换
在这种情况下:是的,当然。只需使用asIntBuffer()。例如:
请注意,这些转换(以及相关的“翻转”、“换行”、更改字节顺序的能力等)是通过java.nio引入的