数组复制
1、错误示范
package com.xmaven.test;
/**
* @Author: Ambition
* @Description TODO
* @Date: 2021/9/14 5:26 下午
* @Version 1.0
*/
public class ArrayCopyDemo {
/**
* 数组复制--反例
*/
public static void main(String[] args) {
int[] arr1 = new int[]{1, 2, 3, 4, 5};
// 这种只是地址应用指向了同一个地址 实际没有复制作用
int[] arr2 = arr1;
arr1[3] = 4444;
//这种一直都是true
System.out.println(arr1 == arr2);
}
}
2、一般思维循环复制数组
package com.xmaven.test;
import java.util.Arrays;
/**
* @Author: Ambition
* @Description TODO
* @Date: 2021/9/14 5:26 下午
* @Version 1.0
*/
public class ArrayCopyDemo1 {
/**
* 数组复制--使用循环
*/
public static void main(String[] args) {
int[] arr1 = new int[]{1, 2, 3, 4, 5};
int[] arr2 = new int[arr1.length];
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
System.out.println(arr1 == arr2);
System.out.println(Arrays.toString(arr2));
}
}
3、使用JDK内置的类进行复制
package com.xmaven.test;
import java.util.Arrays;
/**
* @Author: Ambition
* @Description TODO
* @Date: 2021/9/14 5:26 下午
* @Version 1.0
*/
public class ArrayCopyDemo2 {
/**
* 数组复制--使用jdk内置的系统类复制数组
*/
public static void main(String[] args) {
int[] arr1 = new int[]{1, 2, 3, 4, 5};
int[] arr2 = new int[arr1.length];
/**
* System.arraycopy(sourceArray, srcpos, targetArray, destpos, length);
* 参数说明
* sourceArray 原数组
* srcpos 原数组中的起始位置 开始复制的位置
* targetArray 目标数组 -- 需要复制到指定的数组中去
* destpos 目标数组中的起始位置 从什么位置开始放置复制的元素
* length 原数组长度 复制多少长度
*/
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
System.out.println(arr1 == arr2);
System.out.println(Arrays.toString(arr2));
}
}
评论区