java语言中数组的操作在真实的工作中也不是特别多一般主要使用的是list ,map这些集合来替代数组。实现复制一定数量的数组我简单的跟你提供两种方式吧。
第一种:原始一点就是直接创建两个数组,循环一个数组将数组1中的 下标为0-4的元素拷贝给数组
public static void main(String[] args) {
//创建一个有值的数组
int[] arry1 = {1,2,3,4,5,6}
//创建一个定长5的数组
int[] arry2 = new int[5]
System.out.println(arry2.length)
for (int i = 0i <5i++) {
arry2[i] = arry1[i]
//打印数组2的内容
System.out.print(arry2[i]+" ")
}
}
第二种:高级一些,借助于集合工具类java.util.Arrays实现更方便。
public static void main(String[] args) {
//创建一个有值的数组
int[] arry1 = {1,2,3,4,5,6}
//通过Arrays集合工具类拷贝
int[] arry2 = Arrays.copyOfRange(arry1, 0, 5)
System.out.println(arry2.length)
for (int i = 0i <arry2.lengthi++) {
System.out.print(arry2[i]+" ")
}
}
这个问题首先你需要看arraycopy方法的源码,
public static native void arraycopy(Object src, int srcPos,Object dest, int destPos,
int length)
从方法可以看到5个参数,这5个参数分别代表的意思如下:
参数 说明src 原数组
srcPos 原数组的起始位置
dest 目标数组
destPos 目标数组的起始位置
length 要复制的数组元素的数目
那么你的System.arraycopy(a, 1, c, 0, 3)这个表示的意思是 从a数据的下标1(即4)开始,复制3位(即4,6,8),复制到c数组,c数组从下标0(即1)开始替换3位,所以是4,6,8,7,9。如果System.arraycopy(a, 1, c, 0, 3)的3改为4,则会报数组越界异常,因为a数组从下标1往后只有3位,如果将System.arraycopy(a, 1, c, 0, 3)的0改为1,则结果为1,4,6,8,9,运行结果依次如下:
@param src the source array.* @param srcPos starting position in the source array.
* @param dest the destination array.
* @param destPos starting position in the destination data.
* @param length the number of array elements to be copied.
System.arraycopy(src, srcPos, dest, destPos, length)