克隆的对象可能包含一些已经修改过的属性, 而new出来的对象的属性都还是初始化时候的值, 所以当需要一个新的对象来保存当前对象的"状态"时就要靠克隆了....而通过clone方法赋值的对象跟原来的对象是同时独立存在的.
概念
浅克隆:
被克隆的对象里的所有变量值都与原来的对象相同, 而所有对其他对象的引用仍然指向原来的对象....简单说, 浅克隆仅克隆当前对象, 而不克隆当前对象所引用的对象.
深克隆:
被克隆的对象里的所有变量值都与原来的对象相同, 那些引用其他对象的变量将指向被复制过的新对象, 而不再是原来被引用的对象....简单说, 深克隆不仅克隆了当前对象, 还把当前对象所引用的对象都复制了一遍.
Object中的clone
Object类中的clone()方法属于浅克隆....Java序列化克隆
如果引用类型中海包括引用类型, 要实现多层克隆会很麻烦, 这使用可以使用序列化和反序列化的方式实现对象的深克隆.