复制java数组“;超过;另一个

复制java数组“;超过;另一个,java,arrays,Java,Arrays,我想知道是否真的——正如我的搜索显示的那样——没有办法将一个数组的字节复制到另一个不同基元类型的数组中。 我有一个文件中的字节[],它表示内存中的int[]。我可以像这样轮班 myints[i] = (mybytes[0] << 24) || (mybytes[1] << 16) || (mybytes[2] << 8) || mybytes[0]; 最简单的方法是使用Buffers ByteBuffer b = ByteBuffer.allocate(10

我想知道是否真的——正如我的搜索显示的那样——没有办法将一个数组的字节复制到另一个不同基元类型的数组中。 我有一个文件中的字节[],它表示内存中的int[]。我可以像这样轮班

myints[i] = (mybytes[0] << 24) || (mybytes[1] << 16) || (mybytes[2] << 8) || mybytes[0];

最简单的方法是使用
Buffer
s

ByteBuffer b = ByteBuffer.allocate(1024);
// Fill the bytebuffer and flip() it
IntBuffer i = b.asIntBuffer();

我不认为它比OPs原始代码提高了性能。当您从
IntBuffer
中获取
int
时,它会调用
位。makeInt
执行OP希望避免的操作-
返回(int)(((b3&0xff),但它可能不会对性能造成太大影响(尽管使用直接缓冲区时应该更快),这至少可以防止他自己编写所有代码并可能犯错误。好吧,即使缓冲区速度不快,但至少可以让我远离这种糟糕的语法:-)为什么它是一个性能杀手?您是如何测试它的?答案之一可能会有所帮助,尽管如果性能需要优化它和/或您需要这种低级访问,您可能不应该使用Java。您可能可以使用不安全的-不确定的…我无法想象使用四值ac的组装过程cesses、三班制和ors的速度大致相当于一个简单的int复制,在一个操作中处理四个字节。不幸的是,我忘了提到我做android编程,所以没有不安全的类。
ByteBuffer b = ByteBuffer.allocate(1024);
// Fill the bytebuffer and flip() it
IntBuffer i = b.asIntBuffer();