数组复制的误区

复制一个数组元素

int[]arr1,arr2;

arr1=new int[]{3,5,7,9,11,13,15,17,19};

arr2=arr1;//这样并不是复制数组

下面是这三部操作在内存中的执行过程:

 1 package com.baidu.java;
 2 //关于数组复制的误区
 3 public class Array3 {
 4     public static void main(String[] args) {
 5         int[]arr1,arr2;//声明两个数组
 6         arr1=new int[]{3,5,7,9,11,13,15,17,19};
 7         System.out.println("打印出arr1数组的元素");
 8         for(int i=0;i<arr1.length;i++){
 9             System.out.print(arr1[i]+"	");
10         }
11         System.out.println();
12         System.out.println("打印出arr1的首地址"+arr1);//[I@659e0bfd
13         arr2=arr1;//并不是复制数组
14         /*异常在此处,此处赋值给arr2的是arr1的首地址,并没有重新复制出一
15         个数组,之后再进行操作arr2,也只是对arr1进行操作,因为共用了一个首地址
16         相当于共用一个数组
17         */
18         System.out.println("打印出arr2的首地址"+arr2);//[I@659e0bfd
19         //对arr2数组元素进行修改
20         for(int i=0;i<arr2.length;i++){
21             if(i%2==0){
22                 arr2[i]=i;
23             }
24         }
25         System.out.println("再次打印出arr1数组的元素");
26         for(int i=0;i<arr1.length;i++){
27             System.out.print(arr1[i]+"	");
28         }
29     }
30 }

运行结果:

原文地址:https://www.cnblogs.com/yunqing/p/4751126.html