栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

测试开发面试--java--深拷贝和浅拷贝

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

测试开发面试--java--深拷贝和浅拷贝

1、基本数据类型和引用数据类型

聊深拷贝和浅拷贝之前先来看看基本数据类型和引用数据类型:

java的基本数据类型有8种:byte、short、int、long、float、double、boolean、char

其余的类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型等非基本数据类型都是引用数据类型。

详细内容参考:Java中的基本数据类型和引用数据类型的区别 - MaskWolf - 博客园一、数据类型 Java中的数据类型分为两大类,基本数据类型和引用数据类型。 1、基本数据类型 基本数据类型只有8种,可按照如下分类 ①整数类型:long、int、short、byte ②浮点类型:flhttps://www.cnblogs.com/maskwolf/p/9972982.html

2、数据的内存位置

基本数据类型:直接存储在栈中;

引用数据类型:在栈中存储的是对象的引用,真实的数据存放在堆内存里;

详细内容参考:

基本数据类型和对象的区别 - 千里之外kb - 博客园(1) 基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的栈上的,数据本身的值就是存储在栈空间里面,Java语言里面八种数据类型是这种存储模型; (2)https://www.cnblogs.com/wskb/p/10970761.html

3、深拷贝和浅拷贝

深拷贝和浅拷贝是只针对Object和Array这样的引用数据类型的。

深拷贝:产生一个新对象。对原对象的基本数据类型进行值传递;对原对象的引用数据类型,创建一个新的对象,并复制其内容,两个引用指向两个对象,但对象内容相同。

浅拷贝:产生一个新对象,对原对象的基本数据类型进行值传递;对原对象的引用数据类型,复制一个引用指向原始引用的对象,复制的引用和原始引用指向同一个对象。

浅拷贝和深拷贝的相同之处:

        (1)两种方法都会新建一个对象,

        (2)两种方法修改基本类型数据的属性并不会对原对象产生影响;

区别:

        对子对象的复制方式不同。浅拷贝修改了子对象,会对原对象产生影响;而深拷贝修改子对象不会对原对象产生影响。

4、区分赋值和浅拷贝

赋值是将某一数值或对象赋给某个变量的过程,分为:

1、基本数据类型:赋值,赋值之后两个变量互不影响

2、引用数据类型:赋址,两个变量具有相同的引用,指向同一个对象,相互之间有影响

区别:

(1)赋值不会新建对象,和原数据指向同一个对象;浅拷贝会新建对象,不会和原数据指向同一个对象。

(2)赋值因为和原数据指向同一个对象,所以不管是修改基本数据类型,还是子对象,都会使原数据一起发生改变;

         而浅拷贝,修改基本数据类型不会使原数据一起发生改变,但是修改子对象会使原数据一起发生改变。

!!!注意如果是对基本数据类型的变量进行赋值,赋值之后两个变量是互不影响的。!!!

 这两篇博客讲得比较清楚:彻底讲明白浅拷贝与深拷贝 - 简书一、数据类型 数据分为基本数据类型(String, Number, Boolean, Null, Undefined,Symbol)和对象数据类型。 1、基本数据类型的特点:...https://www.jianshu.com/p/35d69cf24f1f

浅析Javascript解析赋值、浅拷贝和深拷贝的区别 - saucxs - 博客园文章首发于sau交流学习社区 一、赋值(Copy) 赋值是将某一数值或对象赋给某个变量的过程,分为: 1、基本数据类型:赋值,赋值之后两个变量互不影响 2、引用数据类型:赋**址**,两个变量具有相同https://www.cnblogs.com/chengxs/p/10788442.html

5、总结:对“引用数据类型”进行赋值、浅拷贝、深拷贝的区别

 6、拓展:不可变对象

在搜索浅拷贝和深拷贝的时候,发现有些博主会提到不可变对象,贴个链接,简单了解一下。

深入理解Java中的不可变对象 - Matrix海子 - 博客园深入理解Java中的不可变对象 不可变对象想必大部分朋友都不陌生,大家在平时写代码的过程中100%会使用到不可变对象,比如最常见的String对象、包装器对象等,那么到底为何Java语言要这么设计,真https://www.cnblogs.com/dolphin0520/p/10693891.html


 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/351508.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号