深复制:
System.arraycopy(source array name, starting source element index,
target array name, starting target element index,
number of elements to be copied);
对复制出来的数组进行操作不会影响源数组,
这种完全的、元素对元素的复制方式称作深复制(deep copy)。
1 public class JAVA1 { 2 public static void main(String[] args) { 3 int i,max; 4 int[] nums={2,18,1,27,16}; 5 int[] newnums=new int[nums.length]; 6 System.arraycopy(nums,0,newnums,0,newnums.length); 7 newnums[2]=50; 8 for(i=0;i<newnums.length;i++) 9 System.out.println("newnums["+i+"] is "+newnums[i]); 10 System.out.println(); 11 for(i=0;i<nums.length;i++) 12 System.out.println("nuns["+i+"] is "+nums[i]); 13 } 14 }
浅复制:
1 public class ShallowCopy{ 2 public static void main(String[] args) { 3 int i; 4 int[] nums={2,18,1,27,16}; 5 int[] newnums=new int[nums.length]; 6 newnums=nums; 7 newnums[2]=50; 8 for(i=0;i<newnums.length;i++) 9 System.out.println("newnums["+i+"] is "+newnums[i]); 10 System.out.println(); 11 for(i=0;i<nums.length;i++) 12 System.out.println("nums["+i+"] is "+nums[i]); 13 } 14 }
赋值语句 newnums=nums; 这个语句完成的任务是把存储在 nums 数组中的地址赋值到引用变量 newnums 中。并没使用 newnums 数组分配的存储空间,所以不需要使用 new 运算符,声明语句 int newnums[]; 就已经足够了。