如何克隆java字节数组?

Jav*_*cky 30 java

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

如何克隆java字节数组?

pol*_*nts 41

JLS 6.4.5数组类型的成员

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

  • public final field length,其中包含所述阵列的组件的数量(长度可以是正的或零).
  • public方法clone在类中重写相同名称的方法,Object并且不会抛出任何已检查的异常.数组类型的clone方法的返回类型T[]T[].
  • 所有成员都继承自班级Object; 唯一Object没有继承的clone方法是它的方法.

从而:

byte[] original = ...;
byte[] copy = original.clone();
Run Code Online (Sandbox Code Playgroud)

请注意,对于引用类型数组,clone()本质上是浅拷贝.

此外,Java没有多维数组; 它有数组数组.因此,a byte[][]是a Object[],并且还受浅拷贝的影响.

也可以看看

相关问题


其他选择

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

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

相关问题


Tof*_*eer 10

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

  • @TofuBeer你没有说你需要先创建一个大小相同的源数组. (4认同)

eri*_*son 7

这很容易,这是一个好主意.

byte[] copy = arr.clone();
Run Code Online (Sandbox Code Playgroud)

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