复制一个数组元素
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 }
运行结果: