关于System.ArrayCopy()与copyOf()

这段时间一直在各种面试,有过Offer也被歧视过,歧视面试完全是一个新的学习过程,你会发现在面试的时候遇到的问题记忆非常深刻。

其中数组的复制问题也是其中的两个比较常见的问题。平时觉得太简单没有注意细节,结果到面试的时候就会出现各种问题。

1 . ArrayCopy()是System类的一个Static void类型的方法。

arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

arraycopy(被复制的数组, 从第几位开始复制, 目标数组, 从复制过来的第几个元素开始粘贴, 总共粘贴几个元素)

public class Copy {
String str = "abcdef";
char[] arr = str.toCharArray();
char[] arr2 = new char[6];

public void HH() {
System.arraycopy(arr, 3, arr2, 1, 2);
for (char i : arr2) {
System.out.println(i);
}
}
public static void main(String[] args) {
new Copy().HH();
}
}


2 .copyOf() 在JDK6.0中,Array类别中新增了这个方法,可以直接返回一个新的数组对象,其中包含你主观复制的内容。

public static byte[] copyOf(byte[] original,int newLength)

original - 要复制的数组
newLength - 要返回的副本的长度 
返回:
原数组的副本,截取或用 0 填充以获得指定的长度 
抛出: 
NegativeArraySizeException - 如果 newLength 为负 
NullPointerException - 如果 original 为 null


public void HH2(){
char [] arr3 = Arrays.copyOf(arr, arr.length);
for(char j:arr3){
System.out.println("数组的值为:"+j);
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章