- 1 public class ArrayCopyTest1 {
- 2 public static void main(String[] args) {
- 3 int[] src = {
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10
- };
- 4 int len = src.length;
- 5 int[] des = new int[len];
- 6 System.out.println("原数组src:" + Arrays.toString(src));
- 7 System.out.println("========1.使用for循环复制数组======");
- 8
- for (int i = 0; i < len; i++) {
- 9 des[i] = src[i];
- 10
- }
- 11 System.out.println("des:" + Arrays.toString(des));
- 12 des[2] = 16; // 改变des数组不会影响原数组
- 13 System.out.println("改变后的des:" + Arrays.toString(des));
- 14 System.out.println("原数组src:" + Arrays.toString(src));
- 15 16 System.out.println("========2.使用clone实现数组的复制");
- 17 des = (int[]) src.clone(); //强制类型转换
- 18 System.out.println("des:" + Arrays.toString(des));
- 19 des[3] = 101; // 改变des数组的元素不影响原数组
- 20 System.out.println("改变后的des:" + Arrays.toString(des));
- 21 System.out.println("原数组src:" + Arrays.toString(src));
- 22 23 System.out.println("=======3.使用System.arraycopy()方法复制数组======");
- 24 //将数组src从下标0开始复制到des数组中从下标为0的位置开始接收,一共复制len个
- 25 System.arraycopy(src, 0, des, 1, len - 1);
- 26 System.out.println("des:" + Arrays.toString(des));
- 27 des[6] = 100; //修改des数组中第六个元素,原数组没有改变
- 28 System.out.println("修改后的des:" + Arrays.toString(des));
- 29 System.out.println("原数组src:" + Arrays.toString(src));
- 30 System.out.println("======4.使用数组工具类提供的Arrays.copyof()方法实现数组的复制====");
- 31 des = Arrays.copyOf(src, len); // 复制src数组,从下标0开始,复制len个
- 32 System.out.println("des:" + Arrays.toString(des));
- 33 System.out.println("==========================");
- 34
- for (int i = 0; i < len; i++) {
- 35 des[i] = 0; //将des所有元素置0
- 36
- }
- 37 System.out.println("将des所有元素置0:" + Arrays.toString(des));
- 38 System.out.println("====复制数组引用=====");
- 39 des = src; //复制数组的引用,此时des和src引用指向同一个对象
- 40 System.out.println("des:" + Arrays.toString(des));
- 41 des[5] = 100; //修改des会改变原数组
- 42 System.out.println("修改后的des:" + Arrays.toString(des));
- 43 System.out.println("src:" + Arrays.toString(src));
- 44
- }
- 45
- }
- 46
- /*运行结果展示
- 47 原数组src:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- 48 ========1.使用for循环复制数组======
- 49 des:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- 50 改变后的des:[1, 2, 16, 4, 5, 6, 7, 8, 9, 10]
- 51 原数组src:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- 52 ========2.使用clone实现数组的复制
- 53 des:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- 54 改变后的des:[1, 2, 3, 101, 5, 6, 7, 8, 9, 10]
- 55 原数组src:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- 56 =======3.使用System.arraycopy()方法复制数组======
- 57 des:[1, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- 58 修改后的des:[1, 1, 2, 3, 4, 5, 100, 7, 8, 9]
- 59 原数组src:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- 60 ======4.使用数组工具类提供的Arrays.copyof()方法实现数组的复制====
- 61 des:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- 62 ==========================
- 63 将des所有元素置0:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- 64 ====数组复制
- 65 des:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- 66 修改后的des:[1, 2, 3, 4, 5, 100, 7, 8, 9, 10]
- 67 src:[1, 2, 3, 4, 5, 100, 7, 8, 9, 10]
- 68
- 69
- 70
- 71 */
来源: http://www.bubuko.com/infodetail-1955836.html