在Java中,对于基本类型可以使用"="来进行克隆,此时两个变量除了相等是没有任何关系的。
而对于引用类型却不能简单地使用"="进行克隆,这与java的内存空间使用有关。
Java将内存空间分成两块,即栈和堆。
在栈中保存基本类型和引用变量;
在堆中保存对象。
对于引用变量而言,使用"="将修改引用,而不是复制堆中的对象。
此时两个引用变量将指向同一个对象。
因此,如果一个变量对其进行修改则会改变另一个变量。
在克隆对象时,如果对象的成员变量是基本类型,则使用浅克隆即可完成。
如果对象的成员变量包括可变引用类型,则需要使用深克隆。
如果引用类型是不可变的,如String类的对象,则不必进行深克隆。