【Java】数组拷贝方法

本文详细介绍了Java中四种不同的数组复制方法:for循环、Object类的clone()方法、Arrays.copyOf()和Arrays.copyOfRange(),以及System类的arraycopy(),帮助读者理解不同场景下的数组拷贝操作。
摘要由CSDN通过智能技术生成

Java数组拷贝

1、for循环

for循环拷贝是最简单直观的方法,循环访问当前数组的每一个元素,并复制到新数组的相应下标。

2、Object类中的clone()方法

该方法是类Object类中的方法;使用clone方法进行拷贝时,是将arr中的所有元素都拷贝下来,不可以挑选。 clone() 方法的返回值是 Object 类型,要使用强制类型转换为适当的类型。

package array;

import java.util.Arrays;

/**
 * @Date: 2023-03-14 星期二 14:16
 * @Author: Special Care
 * @Description: TODO clone()方法拷贝数组
 * @Version: 1.0.0
 */
public class CopyArrayDemo02 {
    public static void main(String[] args) {
        /**
         * 该方法是类Object类中的方法;使用clone方法进行拷贝时,是将arr中的所有元素都拷贝下来,不可以挑选。
         * clone() 方法的返回值是 Object 类型,要使用强制类型转换为适当的类型。
         */
        int[] arr = {11,22,33,44,55};
        int[] brr = arr.clone();
        System.out.println(Arrays.toString(arr));
        System.out.println("拷贝的数组为:" + Arrays.toString(brr));
    }
}

3、Arrays类中的Arrays.copyOf()方法

方法原型

// 直接拷贝全量数组元素
// int [] original:将要拷贝的原数组
// int newArrLength:新数组的长度;可以扩容到原数组长度的2倍
copyOf(int[] original,  int newArrLength)

使用这种方法复制数组时,默认从原数组的第一个元素(下标为 0)开始复制,新数组的长度将为 newlength。如果新数组长度 length 大于原数组长度,则新数组中采用默认值0进行填充;如果 newlength 小于原数组长度,则复制到第 length 个元素(下标为 length-1)截止。

用法示例

int[] tempArr = new int[]{1,2,3,4,5,6,7,8,9};
int[] testArr1 = Arrays.copyOf(tempArr, 6);
for (int i : testArr1) {
    System.out.println(i);
}

输出

1
2
3
4
5
6

4、Arrays类中的CopyOfRange()方法

方法原型

// 对原数组某一下标范围数组进行拷贝
// int[] original:将要拷贝的原数组
// int beginIndex:拷贝数组的起始下标 ,下标值必须在 0 到原数组长度之间;
// int endIndex:拷贝数组的终止下标,且终止下标必须大于等于起始下标,也可以大于 arr.length,如果大于 arr.length,则新数组中剩余的空位置用默认值0进行填充。

copyOfRange(int[] original,  int beginIndex,  int endIndex)

用法示例

int[] tempArr = new int[]{1,2,3,4,5,6,7,8,9};
int[] testArr2 = Arrays.copyOfRange(tempArr, 3, 7);
for (int i : testArr2) {
    System.out.println(i);
}

输出

4
5
6
7

5、System类中的arraycopy()方法

该方法位于System类中,语法形式如下:

arraycopy(Obiect src, int srcIndex, Object dest, int destIndex, int length)

使用此方法复制数组时,length+srcPos必须小于等于原数组的长度,同时 length+destPos 必须小于等于新数组的长度,否则报ArrayIndexOutOfBoundsException异常
用法示例:

int[] tempArr = new int[]{1,2,3,4,5,6,7,8,9};
int[] testArr3 = new int[3];
System.arraycopy(tempArr, 3, testArr3, 0, 3);
for (int i : testArr3) {
	System.out.println(i);
}

输出

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值