java中数组拷贝的四种方式

java中数组拷贝常用的四种方法为

  • clone
  • System.arraycopy
  • Arrays.copyOf
  • for循环拷贝
    代码举例如下:
public class TestDemo {
         public static void main(String[] args) {
             for_copy();
             clone_copy();
             arraycopy_copy();
             ArrayscopyOf_copy();
         }
         /**
          * for循环拷贝数组
          */
         public static void for_copy() {
             //一维数组的拷贝
             int[] array1={1,2,3,4,5,6,7};
             int[] array2=new int[array1.length];
             for(int i = 0;i < array1.length;i++){
                 array2[i] = array1[i];
             }
             System.out.println(Arrays.toString(array2));
             //二维数组的拷贝
             int[][] array3= {{1,2,3},{4,5,6}};
             int[][] array4 = new int[2][3];
             for(int i = 0;i < array3.length;i++){
                 for(int j = 0;j < array3[i].length;j++){
                     array4[i][j] = array3[i][j];
                 }
             }
             System.out.println(Arrays.deepToString(array4));
         }
         /**
          * clone拷贝数组
          */
         public static void clone_copy() {
             //一维数组的拷贝
             int[] array1={1,2,3,5,9,8,7};
             int[] array2=new int[array1.length];
             array2=array1.clone();
             System.out.println(Arrays.toString(array2));
             //二维数组的拷贝
             int[][] array3={{1,2,3,4},{5,6,7}};
             int[][] array4=new int[2][];

             for(int i = 0;i < array3.length;i++){
                 array4[i] = array3[i].clone();
             }
             for(int i=0;i<array3.length;i++){
                 System.out.print(Arrays.toString(array4[i]));
             }
         }
         /**
          * System.arraycopy拷贝数组
          */
         public static void arraycopy_copy() {
             //一维数组的拷贝
             int[] array = {1,2,3,4,5};
             int[] array2 = new int[array.length];
             System.arraycopy(array, 0, array2, 0, array.length);//(被复制的数组,从几号下标开始复制,复制到哪个数组,复制到新数组第几号下标,复制长度)
             System.out.println(Arrays.toString(array2));
             //二维数组的拷贝
             int[][] array1={{1,2,3,5,9},{2,3,36,5,7}};
             int[][] array3=new int[2][5];
             for(int i=0;i<array1.length;i++){
                 System.arraycopy(array1[i], 0, array3[i], 0, array1[i].length);
             }
             System.out.println(Arrays.deepToString(array3));
         }
         /**
          * Arrays.copyOf拷贝数组
          */
         public static void ArrayscopyOf_copy() {
             //一维数组的拷贝
             int[] array=new int[4];
             System.out.println(Arrays.toString(array));
             int[] array1 = new int[4];
             array1 = Arrays.copyOf(array,array.length);
             System.out.println(Arrays.toString(array1));
             //二维数组的拷贝
             int[][] array2={{1,2,3,4},{2,6,7,5}};
             int[][] array3=new int[2][4];
             array3=Arrays.copyOf(array2, array2.length);
             System.out.println(Arrays.deepToString(array3));
         }
     }

注:这四种拷贝方法对于基本数据类型来说可以理解为是深拷贝,但对于引用类型来说是浅拷贝。要想实现深拷贝需要用接口来实现,在之后的文章中会写到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值