【♨Java基础】你能说说Java深拷贝和浅拷贝区别吗

引用拷贝

创建一个指向对象的引用变量的拷贝。

对象拷贝

创建对象本身的一个副本。

注:深拷贝和浅拷贝都是对象拷贝

浅拷贝

被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。即对象的浅拷贝会对“主”对象进行拷贝,但不会复制主对象里面的对象。”里面的对象“会在原来的对象和它的副本之间共享。

使用clone()方法默认是浅拷贝,调用clone()方法前提是该类实现Cloneable接口

深拷贝

深拷贝是一整个独立的对象拷贝,深拷贝会拷贝所有的属性,并拷贝属性指向的动态分配的内存。当对象和它所引用的对象一起拷贝时即发生深拷贝。深拷贝相比于浅拷贝速度较慢并且花销较大。

简而言之,深拷贝把要复制的对象所引用的对象都复制了一遍。

一般实现通过对象序列化实现深拷贝

 

posted @ 2023-03-19 21:02  残城碎梦  阅读(18)  评论(0编辑  收藏  举报