数据分为基本数据类型和引用数据类型。
浅拷贝:对于基本数据类型:直接复制数据值;对于引用数据类型:只是复制了对象的引用地址,新旧对象指向同一个内存地址,修改其中一个对象的值,另一个对象的值也随之改变。
深拷贝:对于基本数据类型:直接复制数据值;对于引用数据类型:开辟新的内存空间,在新的内存空间里复制一个一模一样的对象,新老对象不共享内存,修改其中一个对象的值,不会影响另一个对象。
基本数据类型 | 引用数据类型 | |
概念 | 基本数据类型是 Java 语言操作数据的基础,包括 boolean、char、byte、short、int、long、float 和 double,共 8 种。 | 除了基本数据类型以外的类型,都是所谓的引用类型。常见的有数组、class(也就是类)和接口。 |
区别 | 数据直接存储在栈中 | 存储在栈中的是对象的引用地址,真实的对象数据存放在堆内存中。 |
浅拷贝 | 深拷贝 | |
对于基本数据类型 | 直接复制数据值 | 只是复制了对象的引用地址,新旧对象指向同一个内存地址,修改其中一个对象的值,另一个对象的值也随之改变。 |
对于引用数据类型 | 直接复制数据值 | 开辟新的内存空间,在新的内存空间里复制一个一模一样的对象,新老对象不共享内存,修改其中一个对象的值,不会影响另一个对象。 |