如何克隆java字节数组?

时间:2010-07-08 23:50:55

标签: java

我有一个字节数组,我想复制/克隆,以避免调用代码修改我的内部表示。

如何克隆java字节数组?

4 个答案:

答案 0 :(得分:39)

  

JLS 6.4.5 The Members of an Array Type

     

数组类型的成员是以下所有成员:

     
      
  • public final field length,其中包含数组的组件数(长度可以是正数或零)。
  •   
  • public方法clone,它会覆盖类Object中同名方法,并且不会抛出任何已检查的异常。数组类型T[]的克隆方法的返回类型是T[]
  •   
  • 所有成员都继承自班级Object; Object唯一未被继承的方法是clone方法。
  •   

因此:

byte[] original = ...;
byte[] copy = original.clone();

请注意,对于参考类型数组,clone()基本上是 shallow copy

此外,Java没有多维数组;它有数组数组。因此,byte[][]Object[],并且还受浅拷贝的约束。

另见

相关问题


其他选项

请注意,clone()会返回 new 数组对象。如果您只想将值从一个数组复制到现有数组,则可以使用例如System.arraycopy

还有java.util.Arrays.copyOf允许您创建具有不同长度的副本(截断或填充)。

相关问题

答案 1 :(得分:10)

System.arraycopy(src,0,dst,0,src.length);

答案 2 :(得分:7)

这很简单,这是一个好主意。

byte[] copy = arr.clone();

请注意,clone()数组方法的返回类型是数组的类型,因此不需要强制转换。

答案 3 :(得分:2)

为了避免可能的Null Pointer Exception,我使用以下语法:

byte[] copy = (arr == null) ? null : arr.clone();