码迷,mamicode.com
首页 > 其他好文 > 详细

深复制和浅复制

时间:2015-08-07 10:47:31      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

深复制:

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[]; 就已经足够了。

深复制和浅复制

标签:

原文地址:http://www.cnblogs.com/MC-1996/p/4710076.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!