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

Java面试题——浅拷贝和深拷贝 Java面试题——深拷贝和浅拷贝 在Java语言中,当我们需要拷贝一个Java对象的时候,常见的会有两种方式的拷贝:浅拷贝和深拷贝。 一、浅拷贝 浅拷贝只是拷贝了源对象的地址,所以源对象的任何值发生变化时,拷贝对象的值也会随之发生变化。 浅拷贝代码举例: User类 package deepcopyandshallowcopy; public class User { private String username; private String password; p 阅读详情

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


 

测试开发面试题目(五)——深拷贝、浅拷贝、赋值 测试开发 阅读详情

相关推荐

滴滴出行测试开发岗面试全流程解析与实战技巧

本文详细解析了滴滴出行测试开发岗位的面试全流程,涵盖三轮技术面与HR面的核心考察点。文章结合实战经验,深入剖析了技术基础、项目深挖、编码能力、系统思维及软实力评估等关键环节,并提供了针对性的准备技巧与避坑指南,旨在帮助候选人系统性地备战,提升面试成功率。

raspberrypi5的博客 566

Java面试知识点(三十五)深拷贝和浅拷贝

在说浅拷贝和深拷贝之前,先说对象拷贝 Student stu1 = new Student(); Student stu2 = stu1; 以上的代码,改变stu1或者stu2中任意一个对象的属性,另一个对象的属性也会随之改变。 原因出在 (stu2 = stu1) 这一句。该语句的作用是将 stu1 的引用赋值给 stu2, 这样,stu1 和 stu2 指向内存堆中同一个对象。 那么如何复制...

程序员世杰 2804

一位资深程序员面试python工程师的岗位心得和历程

最近换工作了,坐标上海,裸辞,之前早有前辈们说过,"裸辞一时爽,一直裸辞一直爽",这话一点不假,裸辞你要面临没有收入来源,但是每天眼睁睁看着各种花销不断支出的煎熬,我主要是觉得一边在上家公司工作一边去下家面试可能要经常请假,不太方便(事实证明也确实是这样的,面试并不是每次面试都能通过,即使有些一面通过,但还会邀约二面),并且还有点自己的事情需要处理,所以才裸辞,我非常不建议在目前的大环境下裸辞...

sheiuh的博客 2828

java面试-深拷贝与浅拷贝

文章目录深拷贝与浅拷贝浅拷贝深拷贝数组拷贝 深拷贝与浅拷贝 通常会和java的值传递相互关联来提问。 new操作符 和 clone方法复制一个对象。 引用拷贝。Object obj = new Object() Person cur = obj 浅拷贝 浅拷贝是按位拷贝对象,创建一个新的对象。是对原有对象的属性值的一份精确拷贝。 拷贝基本类型:拷贝的是基本类型的值(值传递) 拷贝的对象的...

weixin_42170152的博客 554

什么是以太网链路聚合

以太网链路聚合技术通过将多个物理端口捆绑成逻辑端口,可显著提升网络性能。该技术能增加总带宽(各链路带宽之和)、提高可靠性(故障秒级切换)并实现智能负载分担。主要分为手工模式和基于LACP协议的动态模式,后者能检测链路故障更可靠。配置时需确保接口参数一致、模式匹配,适用于核心交换、服务器接入等场景。华为设备通过创建Eth-Trunk接口、指定LACP模式并添加成员接口即可完成部署。这项成熟技术能以低成本解决带宽瓶颈和可靠性问题,是构建高速稳定网络的关键方案。

lai_2020的博客 675

wifi/BT芯片RTL8723DS驱动移植和测试之一wifi篇

本文主要介绍如何在stm32mp157中移植并测试芯片RTL8723DS的wifi功能。

汉尼拔勇闯天涯 8744

【137期】面试官:问点儿基础的,你能说说Java深拷贝和浅拷贝区别吗

程序员的成长之路互联网/程序员/技术/资料共享关注阅读本文大概需要 4 分钟。作者:riemannblog.youkuaiyun.com/riemann_/article/details/87217...

良月柒 797

InSAR_ISCE软件数据处理流程之:利用哨兵数据获取2015年尼泊尔地震同震形变场

ISCE软件数据处理流程之:利用哨兵数据获取2015年尼泊尔地震同震形变场 ISCE软件做干涉只需要将数据准备好,并配置好insarApp.xml文件即可进行。 一、数据准备 1、SAR数据获取 本利中使用的数据为欧空局提供的sentinel-1A/B数据,可从阿拉斯加数据服务器上下载,具体下载方法可参考: 哨兵数据下载方法. 2、哨兵卫星轨道文件下载 哨兵数据处理除了需要SAR影像外,还需提供轨道参数文件,可从https://qc.sentinel1.eo.esa.int/aux_poeorb/下载。下载

weixin_42128764的博客 1万+

Java深拷贝与浅拷贝区别(面试题)

浅拷贝:创建一个新对象,然后将当前对象的非静态字段复制到该新对象,如果字段是值类型的,那么对该字段执行复制;如果该字段是引用类型的话,则复制引用但不复制引用的对象。因此,原始对象及其副本引用同一个对象。    深拷贝:创建一个新对象,然后将当前对象的非静态字段复制到该新对象,**无论该字段是值类型的还是引用类型,都复制独立的一份。**当你修改其中一个对象的任何内容时,都不会影响另一个对象的内容。 ...

qq_30242987的博客 1283

Visual Studio调试时遇到ntdll.dll的PDB文件缺失?别慌,这3个方法帮你搞定(附详细步骤)

本文详细解析了Visual Studio调试时ntdll.dll的PDB文件缺失问题,提供了3种实用解决方案:调整调试设置、配置符号服务器与缓存目录、手动下载管理符号文件。通过分步指导和高级技巧,帮助开发者快速恢复完整的调试功能,特别适用于Windows平台下的C++项目开发。

weixin_42537919的博客 513

Memory SystemsCache, DRAM, Disk翻译学习DRAM部分(二)

DRAM 的发展史

qq_33473931的博客 996

我惊了!字节跳动测开面试题竟然这么简单......

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

百晓生说测试的博客 315

Windows域账户无管理员权限也能装软件?3步搞定UAC设置(附安全提醒)

本文探讨了在Windows域环境中,如何通过配置用户账户控制(UAC)实现临时提权,让无管理员权限的域账户也能安装软件。文章详细介绍了三步走策略:临时加入本地管理员组、调整UAC行为以及至关重要的权限回收,并提供了脚本化部署方案与安全实践指南,旨在平衡企业IT管理的效率与安全。

fox11的博客 760

字节跳动测开岗面试居然这么简单....

如果觉得有些知识点只是了解,但一问又说不上来的话,建议面试前去补补基础。我高中数学老师的口头禅就是:“半懂不懂,就是不懂。”

hlsxjh的博客 299

在 SAP S/4HANA 本地部署和私有云里预览 RAP Travel App:为什么 ADT 发不出去,以及如何用 /IWFND/V4_ADMIN 正确发布 OData V4 Service

在SAP S/4HANA On-Premise/Private Cloud环境中,通过ADT直接发布RAP服务的本地端点常会失效。这是因为系统治理策略要求必须通过SAP Gateway Foundation(事务码/IWFND/V4_ADMIN)发布Service Group,而非开发者本机测试模式。本文详解了该流程的必要性:Service Group是OData V4服务的发布单元,涉及后端登记(/IWBEP/V4_ADMIN)和前端发布(/IWFND/V4_ADMIN)两个环节。提供了从ADT跳转SAP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 270

5G/NR SSB学习总结

6.1 SSB概念 同步信号和PBCH块(Synchronization Signal and PBCH block, 简称SSB),它由主同步信号(Primary Synchronization Signals, 简称PSS)、辅同步信号(Secondary Synchronization Signals, 简称SSS)、PBCH三部分共同组成。 6.2 SSB特征 ...

欢迎来到小七的博客,这里将带你深入探索5G通信的神秘世界。无论你是通信领域的专业人士还是对这一领域充满好奇心的技术爱好者,这里都有专业协议解读、通信知识普及以及有趣的Python编程内容等你发现。 8万+

Java开发和测试开发面试杂记

文章目录重载和重写多态泛型抽象类和接口,继承的区别进程和线程的区别@Resource注解bean的生命周期微信聊天测试时间复杂度int和Integer的区别HTTP和HTTPS的区别TCP UDP计网七层模型三次握手 四次挥手递归排序算法进程调度算法索引#和$的区别HTTP包的内容java new一个对象的过程对象的访问定位数据库连接的类型 内连接外连接(左,右)并行和并发的区别进程和线程的区别深拷贝和浅拷贝HashMap的使用场景sleep和wait的区别简要介绍一下Object类微信发红包5块发10个

qq_43527345的博客 2276

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【面试】测试开发面试题

面试题总结

scsery的博客 1326

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

搜狗 测试开发 面经

一面: 1. 自我介绍 2 介绍项目 难点 3 继续介绍项目 4 有没有实习 5 给了一套题 处理文件 socket编程 tcp三次握手 查找子串 设计测试用例 数据库查询 6 可以接受加班吗 7 为什么选测试开发 8 Java虚拟机   8 自我介绍 9 写找子串函数 10 能不能来实习 11 蓝桥杯 12 有没有测试的经验 13 python深拷贝浅拷贝 ...

u012634258的专栏 1461

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

美团|华为|滴滴 测试开发 面试面经

流程上和一面是一样的,问的问题和一面差不多,只是二面会对细节深挖,所以简历写的东西一定要是自己熟悉的。最后也是给了一道算法题,一开始拿到题目没看懂,花了点时间看题目,前面写了二十多分钟都没有AC,这时候挺焦虑的,自我调节两分钟思考了下有了新的思路,按照新思路重新花了10分钟代码,调试通过。HR面与主管面放在了同一轮,这轮比较轻松,聊了下家里的基本情况,上一份工作的离职原因,入职后如何快速投入工作,以及后续的工作规划等等,都是一些比较轻松的话题,这轮放松心态就好了。什么原因,怎么解决,具体该怎么做性能测试?

2401_85696278的博客 1100

测试开发面试笔记(1)

自我介绍 自己发挥 找工作的原因 如果在职时间比较短,面试官会问离职的原因 Python相关 深拷贝和浅拷贝 拷贝顾名思义就是复制,拷贝分为深浅拷贝 深浅拷贝 使用内置函数:copy(浅拷贝)、deepcopy(深拷贝)。 拷贝:新开辟一段空间用来存储新的对象。 而深浅拷贝的区别在于: 浅拷贝:不拷贝子对象的内容,只是拷贝子对象的引用。 深拷贝:会连子对象的内存也全部拷贝一份,对子对象的修改不会影响源对象 1.深拷贝和浅拷贝只针对像Object,Array这样的引用类型数据。 2.浅拷贝是对对象引用地址进

测试开发工程师的学习经历 430

字节跳动头条研发---测试开发一面面经(附答案)

为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

2301_76643199的博客 748

通讯/服务器公司 测试|测试开发 面试真题|面经 汇

然后问了我自己介绍中提到的渗透测试和web安全,我用自己的话介绍了,渗透测试他说我讲的比较好,web安全我讲的不行,他给我补充了,然后问我有实践吗?最后是手撕代码,不要求调试,大致写出思路就行,一开始我想用迭代,但是失败了,他肯定了我的追求,噗嗤,然后给我提示直接用笨方法就行,还让我继续写了会,人特别好真的,最后写的大差不差吧,其实差挺多我猜。主要是自我介绍学习和项目,问了每天的时间安排,遇到不会的东西怎么学习,对华为的看法,有没有压力大的时候怎么度过的。我说的很快,他说我可以多展示展示,。

2401_83387413的博客 986

测试开发工程师成长日记019 - 测试开发工程师面试知识点整理

面试考点整理

zy01051314的博客 928

实习面试记录

实习生面试记录

zhaoliguaner的博客 405
上一篇: 2021-04-21 91-数字编码-numDecoding
下一篇: Java反射机制---相关博客整理
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值