深浅拷贝的区别

深浅拷贝

如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果B没变,那就是深拷贝,自食其力。

1. 如果是基本数据类型,名字和值都会储存在栈内存中

  

当然,这也算不上深拷贝,因为深拷贝本身只针对较为复杂的object类型数据。

2. 如果是引用数据类型,名字存在栈内存中,值存在堆内存中,但是栈内存会提供一个引用的地址指向堆内存中的值

 

不想两个变量操作数组,都会改变,想建立一个独立的变量,只是存储相同的数据

需要建立一个独立的变量,复制引用数据类型中的数据内容

只复制 引用数据类型中的 数值 而不是 复制地址

称为深拷贝

 
总结

 基本数据类型

 赋值的是 存储的数据

赋值之后 两个变量没有关系

 引用数据类型

  浅拷贝

  直接赋值 赋值的是 内存地址

  赋值之后 两个变量使用的相同内容,一个操作,另一个也会改变

  深拷贝

  循环遍历,获取引用数据类型中,存储的每一个数据信息

  赋值到新的变量中

  赋值之后 两个变量,没有任何关系

这个介绍的很简单,便于理解,逆战班教学真的不一样,大佬觉得怎么样?要不要点个关注,点个赞,照顾一下,谢谢各位支持!

原文地址:https://www.cnblogs.com/zhlang/p/12548229.html