java数组实体复制_java数组复制三种方法详解

源数组如下

创建新数组,并赋值

int a[] = new int[20];

for (int i = 0; i < a.length; i++) {

a[i] = i + 15;

}

三种方法如下

int b[] = Arrays.copyOfRange(a, 0, 20);

int c[] = Arrays.copyOf(a, 10);

int d[] = new int[30];

System.arraycopy(a, 10, d, 5, 10);

整个代码如下

每个方法的详细使用及参数意义在注释中

package arrayCopy;

import java.util.Arrays;

public class Copys {

public static void main(String[] args) {

int a[] = new int[20];

for (int i = 0; i < a.length; i++) {

a[i] = i + 15;

}

int b[] = Arrays.copyOfRange(a, 0, 20);

int c[] = Arrays.copyOf(a, 10);

int d[] = new int[30];

System.arraycopy(a, 10, d, 5, 10);

System.out.print("源数组: ");

for (int i : a) {

System.out.print(i + " ");

}

System.out.println();

System.out.println();

System.out.println("Arrays.copyOfRange(a, 2, 10)结果: ");

for (int t : b) {

System.out.print(t + " ");

}

/*

该方法作用是把a数组从0开始复制,复制到哪里

参数意义(原数组,源数组开始复制位置,源数组截止位置+1)

如果要复制整个数组,则参数为(a,0,20)

新数组长度可以比原数组长,如(a,2,30), 结果就是

17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 0 0 0 0 0 0 0 0 0 0

*/

System.out.println();

System.out.println();

System.out.println("Arrays.copyOf(a, 10)结果:");

for (int t : c) {

System.out.print(t + " ");

}

/*

该方法作用是简单复制数组,从源数组的下标0开始,复制10个数

参数意义(源数组,从0开始到截止位置+1)

如果复制整个数组,则参数为Arrays.copyOf(a, 10),结果就是

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

和Arrays.copyOfRange一样,也可以用作扩容,新数组可以比原数组大,比如Arrays.copyOfRange(a, 2, 30)结果如下

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 0 0 0 0 0 0 0 0 0 0

*/

System.out.println();

System.out.println();

System.out.println("System.arraycopy(a, 10, d, 5, 3)结果:");

for (int t : d) {

System.out.print(t + " ");

}

/*

该方法作用是把源数组a从第10个数开始,复制到新数组第5个位置,总共复制3个数

参数意义(源数组,源数组开始下标,新数组,新数组开始下标,原数组截止下标+1)

如复制5个数为参数设置为System.arraycopy(a, 10, d, 5, 5)

0 0 0 0 0 25 26 27 28 29 0 0 0 0 0

最后一个参数不能超过源数组长度,如当前源数组长度为20,从第10个开始复制,则该参数最大只能是10,否则会有溢出报错

*/

System.out.println();

}

}

结果截图如下

5e48d1c04a742db29ab99f55924c42ad.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值