深拷贝、浅拷贝
一、定义
当我们将对象A拷贝到对象B当中时,
浅拷贝是指, 修改B对象的属性和方法会影响到A对象的属性和方法, 我们称之为浅拷贝
深拷贝是指, 修改B对象的属性和方法不会影响到A对象的属性和方法, 我们称之为深拷贝
二、实例:
深拷贝:
一般基本类型之间的拷贝都是深拷贝,被拷贝对象和拷贝对象之间只是初始值一样,在拷贝完成之后,两个变量之间毫无关系。但是对象之间要是通过赋值的方式进行拷贝的话,得到的就是浅拷贝,一个对象指针属性的改变就会影响到另一个对象指针中的属性值。对象的深拷贝可以采用构造方法实现:
深拷贝的构造方法:若对两个Point类进行深拷贝,其中属性为+x,+y
//形参为一个对象指针
public Point(Point object){ this.x = x; this.y = y; }
然后在main()方法中创建两个对象指针 Point point1 = new Point(); Point point1 = point1;
这样创建的point1和point2之间只是初始属性值一样而已,两者时间是没有关系的。
对象之间的浅拷贝:一般的对象之间的赋值只是将一个对象的指针赋值给了另外一个对象指针,那么这两个指针都同时指向了同一个对象,所以只要有一个指针改变的对象中的属性,那么用另外一个指针进行访问的时候,属性的值也是改变的。如下图: