各种数组复制方法之间的区别
两者之间有什么区别
-
System.arraycopy()
, clone()
- 通过循环访问元素进行手动复制
-
Arrays.copyOf()
- 只是做?
arraynew = arrayold
两者之间有什么区别
System.arraycopy()
,clone()
Arrays.copyOf()
arraynew = arrayold
System.arraycopy()
将数据从一个现有数组复制到另一个现有数组,并且根据参数仅复制其部分内容。clone()
分配一个与原始数组具有相同类型和大小的新数组,并确保它具有相同的内容。System.arraycopy()
arraynew = arrayold
仅将数组的引用复制到新变量,而不会影响数组本身还有一个有用的选项:
Arrays.copyOf()
可用于创建另一个不同大小的数组的副本。这意味着新数组可以大于或大于原始数组,并且通用大小的内容将是源的大小。甚至还有一个版本可以创建不同类型的数组,以及一个可以指定要复制的元素范围的版本(Array.copyOfRange()
)。
请注意,所有这些方法都会创建浅层副本。这意味着只复制存储在数组中的引用,并且引用的对象不会重复。