Java深拷贝与浅拷贝

假设我们有一个类

我们下面用两张图来表示深拷贝和浅拷贝的区别。

浅拷贝

深拷贝

注意事项：

假设我们有一个类，然后我们进行浅拷贝

这时候输出结果为

也就是说，这里并没有像之前图示一样进行浅拷贝，因为对象 x 中的值与对象 y 中的值不一样，这是因为 String 和 Integer 等包装类都是不可变的对象。当需要修改不可变对象的值时，需要在内存中生成一个新的对象来存放新的值，然后将原来的引用指向新的地址。