java拷贝数组的方法

java拷贝数组的方法

Java中想要将一个数组中的值拷贝到另一个数组中,是不能直接将数组进行赋值的,因为这样赋值的是地址,是将i的地址赋值给了j,这时如果改动i,j的值随之会进行改变。

int[] a = {1,2,3,4,5};
int[] b = new int[7];
b=a;

一、循环赋值

在Java中最直接的数组拷贝方式就是通过循环进行拷贝,将数组中的每一个值都赋值给新的数组中对应的数组下标。

int[] a = {1,2,3,4,5,6};
int[] b = new int[a.length];//a.length为数组a的长度
for(int i = 0 ; i < a.length ; i++){
	b[i] = a[i];
}

二、clone方法进行克隆

数组中自带方法clone,底层就是将原始数组进行再声明,这时得到的数组a与数组b的地址就是不同的,但是数组中下标所对应的值是相同的。

int[] a = {1,2,3,4,5};
int[] b  = a.clone();//此时b数组参数与a数组参数相同,但地址不同

三、copyOf方法进行赋值

将原始数组中 ‘指定长度’ 的值赋值到目标数组 ‘从0下标开始’ 到 ‘指定长度’ 。
Arrays.copyOf(arrayA,length);

参数:
arrayA->原始数组
length->复制的长度

int[] a = {1,2,3,4,5};
int[] b = new int[10];
b.copyOf(a , a.length);

四、copyOfRange方法进行赋值

将原始数组从‘开始位置’ 将一定长度数组元素拷贝到目标数组的 ’从0下标开始‘ 的位置。
(原始数组,开始位置,拷贝长度)Arrays.copyOfRange(arrayA,start,length);

参数:
arrayA->原始数组
start -> 开始位置
length -> 拷贝长度

int[] a = {1,2,3,4,5};
int[] b = new int[10];
b.copyOfRange(a , 0 , a.length);

五、System.arraycopy(最牛的)

原始数组和目标数组赋值的起始位置和长度均可设定
(原始数组,原始数组开始位置,目标数组,目标数组开始位置,拷贝长度)System.arraycopy(arrayA , startA , arrayB , startB , length);

参数:
arrayA -> 原始数组
startA -> 原始数组起始位置
arrayB -> 目标数组
startB -> 目标数组起始位置
length -> 长度

int[] a = {1,2,3,4,5};
int[] b = new int[10];
System.arraycopy(a , 0 , b , 0 , a.length);

六、总结

Java中有很多方法可以实现数组的拷贝,但实际上,在各种方法的底层逻辑依旧是采用循环赋值的方式,所以只要掌握循环赋值的技巧与逻辑,各种方法我们可以自行编写。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值