快速介绍克隆
克隆从字面上看就是复制嘛,我们平时复制一个值类型数据直接复制就好了,但是复制一个引用类型比如对象的时候就无从下手了,因为赋值只能赋引用,而如果手动操作把里面的值取出赋给新对象又太麻烦耗时了,有没有好办法?java提供了clone。
克隆类型
在Java语言中,数据类型分为值类型(基本数据类型)和引用类型,值类型包括int、double、byte、boolean、char等简单数据类型,引用类型包括类、接口、数组等复杂类型。浅克隆和深克隆的主要区别在于潜克隆复制的时候如果是值类型则直接克隆,而如果是引用类型则不会克隆对象引用的对象,而只是简单地复制这个引用。也就是说如果修改克隆后的对象中的引用类型数据,原对象中也会更改,因为都是指向同一个内存。而深克隆则都会克隆。
浅克隆
1. 被复制的类需要实现Clonenable接口, 该接口为标记接口(不含任何方法)
2. 覆盖clone()方法,访问修饰符设为public。方法中调用super.clone()方法得到需要的复制对象。
3. 将得到的复制对象返回
class Student implements Cloneable{
private int number;
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
@Override
public Object clone() {
Student stu = null;